无法找到nodejs加密代码的浏览器js代码

时间:2018-02-12 13:07:56

标签: javascript node.js encryption cryptography cryptojs

我有一个nodejs代码,它根据当前时间戳生成签名:

var crypto = require('crypto');
var nonce = new Date().getTime();
var signature = function(nonce, secretKey) {
    var signature = crypto.createHmac('sha256', Buffer.from(secretKey, 'utf8')).update(Buffer.from(nonce, 'utf8')).digest('base64');
    return signature;
}

我正在将此代码转换为浏览器js,但我的任务没有成功。 我参考了这个链接:nodejs crypto module vs crypto-js 但是没有用。

如果nonce=1518440585425secret=9IeVABv94EQBnT6Mn73742kBZOmzFpsM+c62LU9b/h4=,则应该提供此signature=blI2ILR8MW4ParkT4R1vvVOXF42gJOAVPgEJtZT7Ivo=

1 个答案:

答案 0 :(得分:0)

您的nodejs签名生成代码将等同于此crypto js代码:

var secret="9IeVABv94EQBnT6Mn73742kBZOmzFpsM+c62LU9b/h4=";
var nonce = "1518440585425";
var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256,secret);
hmac.update(nonce);
var hash = hmac.finalize();
var signature = hash.toString(CryptoJS.enc.Base64);

console.log(signature); //blI2ILR8MW4ParkT4R1vvVOXF42gJOAVPgEJtZT7Ivo

您需要在HTML文件中包含这些j:

<script src="components/core.js"></script>
<script src="components/hmac.js"></script>
<script src="components/sha256.js"></script>
<script src="components/enc-base64.js"></script>