HMAC SHA-512 Generationsunterschiede zwischen iOS- und Javascript-Bibliotheken
Ich versuche, das Verhalten der Hmac-Generierung von meiner iOS-App mit dem SHA-512-Algorithmus zu replizieren, der auf diesen Link verweist. Objective-C-Beispielcode für HMAC-SHA1.
u diesem Zweck habe ich versucht, CrytoJS und jsSHA Bibliotheken zur Berechnung des Hmac mit Javascript-Code. Ich habe Unstimmigkeiten in den von diesen Javascript-Bibliotheken generierten hmac-Werten und denjenigen festgestellt, die ich mit meinem iOS-Code verwendet habe.
Kann mir jemand helfen zu verstehen, was ich hier falsch machen könnte? Ich habe das Gefühl, dass ich mit dem Format der Schlüssel- und Zählerwerte, die an beide Methoden übergeben werden, einen Fehler mache.
Zum Beispiel: key = "Der schnelle braune Fuchs springt über den faulen Hund" counter = 123
Hmac generiert von iOS Code- 8d4b0f7c7f800ffd656829b98988048b49b08d0068f6fd33add8a02b6bce8097cdd3a69dc8292ec7cc04e15021afb4499afe4a292f8db082b2d253fe3
Hmac generiert durch Javascript-Bibliotheken - 211935F67D87CBB6A98DE6A6D9D64F9AAF8DA5F09BF17F1B7E5BD46FCD9BEFBCD3585FB859BD042291AF5D79B6D92CF7B348CD6558A832
iOS Code:
NSData *key = [key dataUsingEncoding:NSASCIIStringEncoding];
NSData *rawKeyData = [DataUtil rawDataFromHex:key];
//encode the counter
uint8_t tosign[8];
for (int i = sizeof(tosign) - 1; i >= 0; i--) {
tosign[i] = counter & 0xff;
counter >>= 8;
}
unsigned char cHMAC[CC_SHA512_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA512, [rawKeyData bytes], [rawKeyData length], tosign, sizeof(tosign), cHMAC);
NSData *hmac = [NSData dataWithBytes:cHMAC length:sizeof(cHMAC)];
return hmac;
javascript Code:
var hash = CryptoJS.HmacSHA512("123", "The quick brown fox jumps over the lazy dog");