2012-09-24 205 views
2

我已經看過關於iOS和SHA256的至少6個頁面,我仍然無法弄清楚發生了什麼。在iOS上使用SHA256哈希算法

一般情況下,我已經習慣了在PHP與hash()功能做SHA256,喜歡它返回一個字符串值:db1204372d8d9f14acc608b497227047d63ad868987883d0a29198be8e6ce853

我試圖以牛肉安全性以實現我的iOS應用SHA256應用程序和服務器,但是編碼部分之間是讓我頭疼......

我使用一個NSData類別:

+ (NSData *)sha256:(NSData *)data { 

NSMutableData *out = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH]; 

CC_SHA256(data.bytes, data.length, out.mutableBytes); 

if (CC_SHA256(data.bytes, data.length, out.mutableBytes)) return out; 

return nil; 
} 

但是,不管我如何努力,以編碼產生的NSData對象成一個的NSString(發送到服務器),我結束了這樣的ã°ÄBüûôÈo¹$'®AädL¤xR¸U

我的問題的字符串 - 我如何可以實現的行爲與hash一個類別,從而傳遞相同的值,這兩種方法應產生相同的價值?

感謝您的幫助

+0

可能的重複:http://stackoverflow.com/questions/6228092/how-can-i-compute-a-sha-2-ideally-sha-256-or-sha-512-hash-in-ios –

回答

0

對不起,我很晚參加派對。

您從php獲得的結果是每個字節的十六進制值的串聯。您從ios獲得的值是實際的字節字符串。

我懷疑你正在使用類似[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding]的東西來獲取字符串。

但是,您應該按How can i convert NSdata to hex string?中所述將NSData轉換爲您需要的表格,使用[data description]