我有这个 shell 片段,我需要在 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);
";
这不会产生相同的输出。我错过了什么?
最佳答案
echo
在将换行符输入您的 openssl dgst
命令时附加一个换行符。要使输出相等,您可以使用以下方法之一:
- 使用
echo -n "hellokev"
,指示echo
省略换行符。 - 使用
printf "hellokev"
在 shell 中获得更好、更便携的打印方式。printf
不会附加换行符,除非您告诉它。 - 将
\n
附加到您对update()
函数的输入,例如.update('hellokv\n')
,如果您不允许修改 shell 代码段。
关于node.js - 如何在 Node.js 中重现 Bash HMAC 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53623938/