为什么下面的输出不同?
openssl命令行

echo Chris | openssl base64
# Q2hyaXMK

node.js节点
new Buffer('Chris').toString('base64')
// Q2hyaXM=

我正在尝试使用passport-http库进行基本身份验证,它似乎需要1格式的编码数据。这对我来说是个问题,因为我的所有测试都依赖于生成编码数据的节点(mocha,supertest)。

最佳答案

区别在于echo命令在其输出的末尾附加一个换行符(\n)。
换句话说,Chris的base64编码确实是Q2hyaXM=,但是Chris\n的表示(其中\n只是一个newline字符)是Q2hyaXMK
您可能需要与以下内容进行比较:

new Buffer('Chris\n')

…或者更好的是,我们可以在the manual entry for echo中发现:
Options:
  -n    do not append a newline

所以简单地使用:
echo -n Chris | openssl base64
#     🡑

将按预期输出Q2hyaXM=

07-28 09:09