【问题标题】:How to get CryptoJS result as hash_hmac PHP (SHA1)如何将 CryptoJS 结果作为 hash_hmac PHP (SHA1)
【发布时间】:2018-04-25 07:50:11
【问题描述】:

尝试使用带有 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 值?

【问题讨论】:

    标签: javascript php hmac cryptojs hmacsha1


    【解决方案1】:

    我找到了一种获取 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);
    

    【讨论】:

      【解决方案2】:

      缓冲到 UTF8

      您可以使用 toString 方法将您的 Buffer 转换为 JavaScript 中的 UTF-8;确保你在参数中指定了哪种格式,合适的值是hexutf8,阅读更多here

      var buf = ' accept';
      var bufferedSecret = '��xDx�����4�J�?)#';
      
      CryptoJS.HmacSHA1(buf, bufferedSecret).toString('utf8');
      

      【讨论】:

      • 尝试过:CryptoJS.HmacSHA1(buf, bufferedSecret).toString('utf8'); 并得到 'Uncaught TypeError: (a || n).stringify is not a function'
      • var buf = ' accept'; var bufferedSecret = '��xDx�����4�J�?)#'; var wordArr = CryptoJS.HmacSHA1(buf, bufferedSecret); CryptoJS.enc.Utf8.stringify(wordArr); Get: 'core.js:435 Uncaught Error: Malformed UTF-8 data'
      • CryptoJS.HmacSHA1(buf, bufferedSecret).toString(); 会给你 UTF8 输出,见runkit.com/5a0874c47e374700124bab62/5a0876157e374700124bacbf
      猜你喜欢
      • 2013-10-23
      • 1970-01-01
      • 2020-12-10
      • 2022-05-13
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多