我有这个shell片段,需要在Node.js中复制

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

我当前的节点尝试是:
node -e "
var crypto = require('crypto');
var credential = crypto.createHmac('sha1', 'mysecret').update('hellokev').digest('base64')
console.log(credential);
";

它不会产生相同的输出。我错过了什么?

最佳答案

echo将换行符追加到openssl dgst命令中。要使输出相等,可以使用以下方法之一:
使用echo -n "hellokev",指示echo省略换行符。
使用printf "hellokev"在外壳中打印的方式更好、更便携。printf不追加换行符,除非您告诉它。
如果不允许修改shell代码段,请将\n附加到update()函数的输入中,如.update('hellokv\n')

10-04 11:51