簡體   English   中英

如何使用Objective-C創建文件(jpeg,pdf和tiff)的sha256哈希

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM