Node和openssl库中的Base64编码产生不同的输出

yzuktlbb  于 2023-02-18  发布在  Node.js
关注(0)|答案(1)|浏览(174)

为什么下面的代码会产生不同的输出?

  1. OpenSSL命令行
echo Chris | openssl base64
# Q2hyaXMK
  1. Node.js
new Buffer('Chris').toString('base64')
// Q2hyaXM=

我正在尝试使用passport-http库进行基本身份验证,它似乎希望编码数据的格式为#1。这对我来说是一个问题,因为我的所有测试都依赖于Node生成编码数据(摩卡、超级测试)。

64jmpszr

64jmpszr1#

不同之处在于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=

相关问题