我有这个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')
。