1
私はどこに行っても問題を解決できません。私はAndroidとWindowsの両方のプログラムで、与えられた画像のSHA1ハッシュを計算しました。私はダウンロードしたHashCalcでこれらのハッシュを確認しました。しかし、私はiPhoneのために同じことをしようとすると、私は完全に異なるハッシュを取得します。私はハッシュを計算する前にイメージをバイト配列に変換することと関係があると信じています。私はここでの問題は、あなたがUIImageJPEGRepresentation()
を使用してデータを変換していることである疑いがあるiPhoneで(画像の)SHA1を生成しますか? (間違った結果)
- (void)imagePickerCotroller:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
[imageview setImage:image];
NSData* imageData = UIImageJPEGRepresentation(image, 1);
NSString *hash = makeSHA1(imageData);
[filepath setText: hash];
[self dismissModalViewControllerAnimated:YES];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[self dismissModalViewControllerAnimated:YES];
}
NSString* makeSHA1(NSData *data) {
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(data.bytes, data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
}
これは間違ったハッシュ – silentBeep