如何在Node.js中重现Bash HMAC加密

时间:2018-12-05 01:40:07

标签: node.js linux bash openssl cryptography

我有这个外壳代码片段,需要在Node.js中复制

echo "hellokev" | openssl dgst -binary -sha1 -hmac "mysecret" | openssl base64;

我当前的Node尝试是:

node -e "
var crypto = require('crypto');
var credential = crypto.createHmac('sha1', 'mysecret').update('hellokev').digest('base64')
console.log(credential);
";

哪个不会产生相同的输出。我想念什么?

1 个答案:

答案 0 :(得分:2)

echo会在输入到openssl dgst命令中时添加一个换行符。要使输出相等,可以使用以下方法之一:

  • 使用echo -n "hellokev",指示echo省略换行符。
  • 使用printf "hellokev"在shell中提供更好,更便携的打印方式。 printf不会附加换行符,除非您告诉它。
  • 如果不允许您修改外壳代码段,请将\n添加到update()函数的输入中,例如.update('hellokv\n')