如何使用objective-c创建文件(jpeg,pdf和tiff)的sha256哈希值

时间:2015-09-29 13:18:52

标签: ios objective-c sha256

我使用了以下来自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哈希值转换回另一个base64string。 但是当我使用以下代码将hashdata转换为字符串时,我只得到nil。 那么有人可以帮我将sha hash转换成字符串吗?

imageHashtag = [NSString stringWithUTF8String:[imageHash bytes]];

imagehash确实有32位数据,但imagehashtag为nil。

1 个答案:

答案 0 :(得分:1)

我们添加了以下代码来解决问题:

    NSString *hash=[sha256 description];
    hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
    hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
    hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];

    return hash;

解决我们的问题。