从节点和OpenSSL库Base64编码产生不同的输出

问题描述 投票:2回答:1

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

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

我试图使用passport-http库基本身份验证,并出现在#1的格式在期待编码数据。这对我来说是一个问题,因为我所有的测试依赖于节点生成编码数据(摩卡,supertest)。

node.js openssl base64 echo basic-authentication
1个回答
5
投票

所不同的是echo命令附加在其输出端的端部的换行字符(\n)。

换句话说,Base64编码为Chris确实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=预期!

© www.soinside.com 2019 - 2024. All rights reserved.