Расхождения в поколении HMAC SHA-512 между библиотеками iOS и javascript

Я пытаюсь повторить поведение генерации Hmac из моего приложения iOS, используя алгоритм SHA-512, ссылаясь на эту ссылкуПример кода Objective C для HMAC-SHA1.

Для этого я попытался использоватьCrytoJS а такжеjsSHA библиотеки для вычисления Hmac с использованием кода JavaScript. Я обнаружил расхождения в значениях hmac, генерируемых этими библиотеками javascript, и значениями, которые я использую в своем коде iOS.

Может ли кто-нибудь помочь мне понять, что я могу делать здесь не так? У меня такое чувство, что я испортил формат значений ключа и счетчика, которые передаются обоим методам.

Например: key = "Быстрая коричневая лиса перепрыгивает через ленивую собаку" counter = 123

Hmac, сгенерированный кодом iOS - 8d4b0f7c7f800ffd656829b98988048b49b08d0068f6fd33add8a02b6bce8097cdd3a69dc8292ec7cc04e15021afb4499afe4a292f8db082b2d015fefe7

Hmac, сгенерированный библиотеками javascript- 211935F67D87CBB6A98DE6A6D9D64F9AAF8DA5F09BF17F1B7E5BD46FCD9BEFBCD3585FB859BD042291AF5D79B6D92CF7B348CD6558A66A4432

Код iOS:

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:

var hash = CryptoJS.HmacSHA512("123", "The quick brown fox jumps over the lazy dog");

Ответы на вопрос(1)

Ваш ответ на вопрос