Discrepancias de generación HMAC SHA-512 entre las bibliotecas iOS y javascript

Estoy tratando de replicar el comportamiento de generación Hmac desde mi aplicación iOS usando el algoritmo SHA-512 que hace referencia a este enlaceCódigo de muestra de Objective-C para HMAC-SHA1.

Para este propósito, he intentado usarCrytoJS yjsSHA bibliotecas para calcular el Hmac usando código javascript. He encontrado discrepancias en los valores hmac generados por estas bibliotecas javascript y la que tengo usando mi código iOS.

¿Alguien puede ayudarme a entender qué podría estar haciendo mal aquí? Tengo la sensación de que me estoy equivocando con el formato de los valores clave y de contador que se pasan a ambos métodos.

Por ejemplo: key = "El rápido zorro marrón salta sobre el perro perezoso" counter = 123

Hmac generado por el código iOS- 8d4b0f7c7f800ffd656829b98988048b49b08d0068f6fd33add8a02b6bce8097cdd3a69dc8292ec7cc04e15021afb4499afe4a292f8db082b2d253ddfe7d

Hmac generado por las bibliotecas javascript- 211935F67D87CBB6A98DE6A6D9D64F9AAF8DA5F09BF17F1B7E5BD46FCD9BEFBCD3585FB859BD042291AF5D79B6D92CF7B348CD6558A18AEF432666F34B348CD6558A18AEF4326FAF

Código de 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;

Código JavaScript:

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta