我有这个外壳代码片段,需要在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);
";
哪个不会产生相同的输出。我想念什么?
答案 0 :(得分:2)
echo
会在输入到openssl dgst
命令中时添加一个换行符。要使输出相等,可以使用以下方法之一:
echo -n "hellokev"
,指示echo
省略换行符。printf "hellokev"
在shell中提供更好,更便携的打印方式。 printf
不会附加换行符,除非您告诉它。\n
添加到update()
函数的输入中,例如.update('hellokv\n')
。