为什么下面产生不同的输出?
echo Chris | openssl base64
# Q2hyaXMK
new Buffer('Chris').toString('base64')
// Q2hyaXM=
我试图使用passport-http
库基本身份验证,并出现在#1的格式在期待编码数据。这对我来说是一个问题,因为我所有的测试依赖于节点生成编码数据(摩卡,supertest)。
所不同的是echo命令附加在其输出端的端部的换行字符(\n
)。
换句话说,Base64编码为Chris
确实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=
预期!