为什么下面的代码会产生不同的输出?
echo Chris | openssl base64 # Q2hyaXMK
new Buffer('Chris').toString('base64') // Q2hyaXM=
我正在尝试使用passport-http库进行基本身份验证,它似乎希望编码数据的格式为#1。这对我来说是一个问题,因为我的所有测试都依赖于Node生成编码数据(摩卡、超级测试)。
passport-http
64jmpszr1#
不同之处在于echo命令在其输出的末尾追加了一个换行符字符(\n)。换句话说,Chris的 *Base64编码 * 实际上是Q2hyaXM=,但是Chris\n的表示(其中\n只是一个newline字符)是Q2hyaXMK。您可能想与以下各项进行比较:
\n
Chris
Q2hyaXM=
Chris\n
newline
Q2hyaXMK
new Buffer('Chris\n')
...或者更好的是,我们可以在the man ual entry for echo中发现:
man
echo
Options: -n do not append a newline
因此,只需使用:
echo -n Chris | openssl base64 # 🡑
将按预期输出Q2hyaXM=!
1条答案
按热度按时间64jmpszr1#
不同之处在于echo命令在其输出的末尾追加了一个换行符字符(
\n
)。换句话说,
Chris
的 *Base64编码 * 实际上是Q2hyaXM=
,但是Chris\n
的表示(其中\n
只是一个newline
字符)是Q2hyaXMK
。您可能想与以下各项进行比较:
...或者更好的是,我们可以在the
man
ual entry forecho
中发现:因此,只需使用:
将按预期输出
Q2hyaXM=
!