基本上我想編寫計算sha1哈希的函數。在Objective-C和C#.NET中產生不同結果的SHA1哈希
到目前爲止我試過的如下。
C#的.NET
byte[] p2 = System.Text.Encoding.Unicode.GetBytes("password");
System.Security.Cryptography.SHA1 sha = new System.Security.Cryptography.SHA1CryptoServiceProvider();
byte[] result = sha.ComputeHash(p2);
string encodedPassword = Convert.ToBase64String(result);
輸出: 6Pl/upEE0epQR5SObftn + s2fW3M =
目標C
我已經加入類的Base64從NSData_Base64 Classes reference。
NSString *password = @"password";
NSData *data = [password dataUsingEncoding:NSUTF8StringEncoding];
NSString *unicodePassword = [[NSString alloc] initWithData:data encoding:NSUnicodeStringEncoding];
data = [unicodePassword dataUsingEncoding:NSUnicodeStringEncoding];
unsigned char hash[CC_SHA1_DIGEST_LENGTH];
CC_SHA1([data bytes], [data length], hash);
NSData *result = [NSData dataWithBytes:hash length:CC_SHA1_DIGEST_LENGTH];
NSLog(@"Result: %@",[result base64EncodedString]);
輸出: dYusXVhObIBzJMgg1E1FJ9cK1NY =
任何人都可以請建議我究竟做錯了什麼?
爲什麼這兩個值有所不同?
請糾正我的錯誤。
也許「NSData_Base64類參考」使用URL安全的base64,但C#.NET的System.Security.Cryptography.SHA1與URL不安全的一起工作?嘗試使用聯機SHA1加密器/解密器來比較結果。我建議使用可在此處找到的GData Base64:https://code.google.com/p/gdata-objectivec-client/。 –