Intente generar HMAC en JS con CryptoJS lib desde la cadena UTF8 con secreto UTF8. Como PHP hash_hmac ('sha1', '...', '...', verdadero);

PHP:

$buf = ' accept';
$bufferedSecret = '��xDx�����4�J�?)#';

hash_hmac('sha1', $buf, $bufferedSecret, false);
/* d301cae776ed8c5d46ac93bd7441b01af4d1b888 */
hash_hmac('sha1', $buf, $bufferedSecret, true);
/* ���v�]F���tA��Ѹ� */

JavaScript:

var buf = ' accept';
var bufferedSecret = '��xDx�����4�J�?)#';

CryptoJS.HmacSHA1(buf, bufferedSecret).toString();
/* d301cae776ed8c5d46ac93bd7441b01af4d1b888 */
var forBase64 = CryptoJS.HmacSHA1(buf, bufferedSecret);
CryptoJS.enc.Base64.stringify(forBase64);
/* 0wHK53btjF1GrJO9dEGwGvTRuIg= */

¿Cómo obtener el mismo valor HMAC (SHA1) UTF8 en JS?

0
Павел Снетков 12 nov. 2017 a las 18:40

2 respuestas

La mejor respuesta

Encontré una manera de obtener UTF-8 RAW.

Usó "convertWordArrayToUint8Array ()" desde aquí: https://gist.github.com/getify/7325764 y simplemente decodificarlo.

var wordArr = CryptoJS.HmacSHA1(buf, bufferedSecret);
var utf8Arr = convertWordArrayToUint8Array(wordArr);
var string = new TextDecoder('utf-8').decode(utf8Arr);
1
Павел Снетков 13 nov. 2017 a las 20:03

Búfer a UTF8

Puede tomar su búfer y convertirlo a UTF-8 en JavaScript usando el método toString; asegúrese de especificar qué formato en los parámetros, los valores adecuados son hex y utf8, lea más aquí.

var buf = ' accept';
var bufferedSecret = '��xDx�����4�J�?)#';

CryptoJS.HmacSHA1(buf, bufferedSecret).toString('utf8');
0
Robinlemon 12 nov. 2017 a las 15:48