[英]how do i create a sha256 hash of a file(jpeg,pdf and tiff) using objective-c
我使用了從此處獲取的以下代碼。
- (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。 但是當我使用以下代碼將哈希數據轉換為字符串時,我只會得到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;
解決我們的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.