使用 base64 编码密码时是否需要包含 -n 选项?
Do I need to include -n option when encoding a password using base64?
我在某处读到,当用 base64 编码密码时,我应该使用 echo -n
来防止换行符包含在编码值中。例如,
echo changeme | base64
Y2hhbmdlbWUK
echo -n changeme | base64
Y2hhbmdlbWU=
这两个base64字符串是不同的,但是当我解码它们时它们是相同的
echo Y2hhbmdlbWUK | base64 -d
changeme
echo Y2hhbmdlbWU= | base64 -d
changeme
所以我真的需要添加 -n
选项 https://linux.die.net/man/1/echo
说:
do not output the trailing newline
搜索使用 python 给出了这个长篇大论的示例...没有全部阅读 Simple way to encode a string according to a password?
当您使用 online converter 将其解码为十六进制时,您会看到第一个字符串变为 6368616e67656d650a
并在末尾具有 0a
(ASCII 换行符),这第二个没有。
所以答案是肯定的,你确实需要添加-n选项。
如果您将 echo
更改为 echo -n
,您也会看到这一点。
echo -n Y2hhbmdlbWU= | base64 -d
changemePROMPT-SHOWS-HERE
另一种查看方式是使用以下 UNIX 命令:
echo -n Y2hhbmdlbWUK | base64 -d | od -c
0000000 c h a n g e m e \n
echo -n Y2hhbmdlbWU= | base64 -d | od -c
0000000 c h a n g e m e
您可以看到第一个编码包含换行符而第二个没有。
我在某处读到,当用 base64 编码密码时,我应该使用 echo -n
来防止换行符包含在编码值中。例如,
echo changeme | base64
Y2hhbmdlbWUK
echo -n changeme | base64
Y2hhbmdlbWU=
这两个base64字符串是不同的,但是当我解码它们时它们是相同的
echo Y2hhbmdlbWUK | base64 -d
changeme
echo Y2hhbmdlbWU= | base64 -d
changeme
所以我真的需要添加 -n
选项 https://linux.die.net/man/1/echo
说:
do not output the trailing newline
搜索使用 python 给出了这个长篇大论的示例...没有全部阅读 Simple way to encode a string according to a password?
当您使用 online converter 将其解码为十六进制时,您会看到第一个字符串变为 6368616e67656d650a
并在末尾具有 0a
(ASCII 换行符),这第二个没有。
所以答案是肯定的,你确实需要添加-n选项。
如果您将 echo
更改为 echo -n
,您也会看到这一点。
echo -n Y2hhbmdlbWU= | base64 -d
changemePROMPT-SHOWS-HERE
另一种查看方式是使用以下 UNIX 命令:
echo -n Y2hhbmdlbWUK | base64 -d | od -c
0000000 c h a n g e m e \n
echo -n Y2hhbmdlbWU= | base64 -d | od -c
0000000 c h a n g e m e
您可以看到第一个编码包含换行符而第二个没有。