bashのJavascript BTOAとbase64?

bashのJavascript BTOAとbase64?

APIに送信する前に、ユーザー名とパスワードの組み合わせをBase64に変換する必要があります。

javascript BTOA機能は私にとって効果的ですが、bashでbase64コマンドを使用しようとすると、少し異なる結果が出ます。

JavaScript:

btoa("hello");                   # aGVsbG8=
btoa("username:password");       # dXNlcm5hbWU6cGFzc3dvcmQ=
btoa("testing");                 # dGVzdGluZw==

大きな打撃:

echo hello | base64              # aGVsbG8K
echo username:password | base64  # dXNlcm5hbWU6cGFzc3dvcmQK
echo testing | base64            # dGVzdGluZwo=

結果は常に似ていますが異なります。

サーバーにはJSスタイルのコーディングが必要ですが、bashを使用する必要があります。

結果は異なりますが、同様の理由は何ですか? bashを使用してjavascriptで結果を生成する方法は?

答え1

echo「helpively」は出力に改行文字を追加します。基準)、Base64も忠実にエンコードします。

echo改行を追加しないように指示します。

$ echo hello | od -c
0000000   h   e   l   l   o  \n
0000006
$ echo -n hello | od -c
0000000   h   e   l   l   o
0000005

または、より良い方法は次のものを使用することですprintf

$ printf '%s' hello | od -c
0000000   h   e   l   l   o
0000005
$ printf '%s' hello | base64
aGVsbG8=
$ echo -n hello | base64
aGVsbG8=

関連情報