为什么下面的输出不同?
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
man
ual entry for echo
中发现:Options:
-n do not append a newline
所以简单地使用:
echo -n Chris | openssl base64
# 🡑
将按预期输出
Q2hyaXM=
!