【问题标题】:how do i create a sha256 hash of a file(jpeg,pdf and tiff) using objective-c如何使用objective-c创建文件(jpeg、pdf和tiff)的sha256哈希
【发布时间】:2015-10-08 18:41:02
【问题描述】:

我使用了从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 字符串。 但是当我使用以下代码将哈希数据转换为字符串时,我只得到零。 那么有人可以帮我将 sha 哈希转换为字符串吗?

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

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

【问题讨论】:

    标签: ios objective-c sha256


    【解决方案1】:

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

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

    解决我们的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2020-06-05
      • 2016-04-29
      相关资源
      最近更新 更多