【问题标题】:hash_hmac() with RAW Binary OUTPUT in JavaScripthash_hmac() 与 JavaScript 中的 RAW 二进制输出
【发布时间】:2016-06-19 18:03:43
【问题描述】:

我有生成hash_hmac

的php代码
key = base64_encode(hash_hmac('sha1',$public_key, $private_key,TRUE));

我已经尝试使用 CryptoJS 库来解决它。

根据文档:

var public_key = 'msg',
    private_key = 'key';
var hash = CryptoJS.HmacSHA1(public_key, private_key)

我不知道如何将原始输出设置为 Binary,就像在 php 中将 $raw_output 设置为 true

谁能帮帮我?

谢谢:)

【问题讨论】:

  • CryptoJS 不提供编码器来获取“二进制字符串”。为什么你甚至需要它?在 JavaScript 中处理二进制数据时会出现各种各样的问题。十六进制 (hash.toString()) 有什么问题?
  • 你终于用js搞定了吗?我有同样的问题,需要原始输出。提前致谢

标签: javascript php binary base64 cryptojs


【解决方案1】:

php代码

echo base64_encode(hash_hmac('SHA1', 'shanghai', '0', true).'beijing');

php 输出

xvBv49PpaYvXAIfy3iOSDWNQj89iZWlqaW5n

节点代码

var crypto = require('crypto');
var buf1 = crypto.createHmac("sha1", "0").update("shanghai").digest();
var buf2 = Buffer.from('beijing');
console.log(Buffer.concat([buf1, buf2]).toString('base64'));    

节点输出

xvBv49PpaYvXAIfy3iOSDWNQj89iZWlqaW5n

【讨论】:

    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2011-06-10
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多