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

标签 node.js linux bash openssl cryptography

我有这个 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/

相关文章:

javascript - JS if( item === ? ) 语句未触发。比较问题

node.js response.write(data) 数据量小时需要很长时间

bash - shell脚本解析日志文件

bash - 登录SSH后执行一条语句

javascript - 尝试使用node.js,不断出现错误

linux - 停止无限循环并在循环结束时中断

linux - 树莓派 : Unable to set my RPI as a router

linux - 网络端口被占用,但没有进程使用它

bash - 如何将多行合并为单行但仅适用于由空行分隔的行 block

node.js - 如何为 neutrino 项目禁用 webpack dev 服务器自动重新加载?