gpt4 book ai didi

iphone - 在 iPhone 上生成 SHA1(图像)? (不正确的结果)

转载 作者:行者123 更新时间:2023-11-29 13:39:11 25 4
gpt4 key购买 nike

我到处都找遍了,找不到解决我问题的办法。我已经为 Android 和 Windows 编写了一个程序来计算给定图像的 SHA1 哈希值。我用下载的 HashCalc 确认了这些哈希值。但是,当我尝试对 iPhone 执行相同操作时,我得到了一个完全不同的哈希值。我相信它与在计算哈希之前将图像转换为字节数组有关。这是我的代码:

- (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;
}

最佳答案

我怀疑这里的问题是您正在使用 UIImageJPEGRepresentation() 转换数据。即使您从 JPEG 数据开始,也不能保证这会返回与您开始时完全相同的字节。

我的(未经测试的)建议是您向 CGDataProvider 询问原始数据。像这样:

CGImageRef cgImage = [image CGImage];
CGDataProviderRef provider = CGImageGetDataProvider(cgImage);
CFDataRef imageData = CGDataProviderCopyData(provider);
if (imageData != NULL) {
...
CFRelease(imageData);
}

关于iphone - 在 iPhone 上生成 SHA1(图像)? (不正确的结果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9641609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com