我如何使用 objective-c 创建文件(jpeg、pdf 和 tiff)的 sha256 散列
how do i create a sha256 hash of a file(jpeg,pdf and tiff) using objective-c
我使用了从 here.
中获取的以下代码
- (NSData *)sha256:(NSData *)data {
unsigned char hash[CC_SHA256_DIGEST_LENGTH];
if ( CC_SHA256([data bytes], [data length], hash) ) {
NSData *sha256 = [NSData dataWithBytes:hash length:CC_SHA256_DIGEST_LENGTH];
return sha256;
}
return nil;
}
NSData *imageHash=[self sha256:imageData];
imageHashtag = [imageHash base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
虽然我在这方面遇到了一些问题 - 创建的散列包括 / 和 =,它们不应该存在。
有人可以帮我弄清楚我在这里犯的错误吗?我该如何解决?
编辑:我发现了可能的问题 - 我正在将作为 base64 编码数据的 sha 哈希转换回另一个 base64 字符串。
但是当我使用以下代码将哈希数据转换为字符串时,我只得到了 nil。
那么有人可以帮我将 sha 哈希转换为字符串吗?
imageHashtag = [NSString stringWithUTF8String:[imageHash bytes]];
imagehash确实有32位数据,但是imagehashtag为nil。
我们添加了以下代码来解决问题:
NSString *hash=[sha256 description];
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
return hash;
解决我们的问题。
我使用了从 here.
中获取的以下代码- (NSData *)sha256:(NSData *)data {
unsigned char hash[CC_SHA256_DIGEST_LENGTH];
if ( CC_SHA256([data bytes], [data length], hash) ) {
NSData *sha256 = [NSData dataWithBytes:hash length:CC_SHA256_DIGEST_LENGTH];
return sha256;
}
return nil;
}
NSData *imageHash=[self sha256:imageData];
imageHashtag = [imageHash base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
虽然我在这方面遇到了一些问题 - 创建的散列包括 / 和 =,它们不应该存在。 有人可以帮我弄清楚我在这里犯的错误吗?我该如何解决?
编辑:我发现了可能的问题 - 我正在将作为 base64 编码数据的 sha 哈希转换回另一个 base64 字符串。 但是当我使用以下代码将哈希数据转换为字符串时,我只得到了 nil。 那么有人可以帮我将 sha 哈希转换为字符串吗?
imageHashtag = [NSString stringWithUTF8String:[imageHash bytes]];
imagehash确实有32位数据,但是imagehashtag为nil。
我们添加了以下代码来解决问题:
NSString *hash=[sha256 description];
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
return hash;
解决我们的问题。