簡體   English   中英

如何獲得CryptoJS結果為hash_hmac PHP(SHA1)

[英]How to get CryptoJS result as hash_hmac PHP (SHA1)

嘗試從帶有UTF8機密的UTF8字符串中使用CryptoJS lib生成JS上的HMAC。 像PHP hash_hmac('sha1','...','...',true);

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= */

如何在JS上獲得相同的HMAC(SHA1)UTF8值?

緩沖區到UTF8

您可以使用toString方法獲取Buffer並將其轉換為JavaScript中的UTF-8。 請確保您在參數中指定了哪種格式,合適的值是hexutf8在此處了解更多信息

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

CryptoJS.HmacSHA1(buf, bufferedSecret).toString('utf8');

我被發現獲得UTF-8 RAW的方法。

從這里使用“ convertWordArrayToUint8Array()”: https ://gist.github.com/getify/7325764並對其進行解碼。

var wordArr = CryptoJS.HmacSHA1(buf, bufferedSecret);
var utf8Arr = convertWordArrayToUint8Array(wordArr);
var string = new TextDecoder('utf-8').decode(utf8Arr);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM