Base64编码是加一行
Base64 encoding is adding a new line
我正在尝试在 linux 的命令行中使用 base64 对数据库字符串进行编码。
完成后,我将值添加到 kubernetes 中的秘密,但由于未接受 db 字符串,我的应用程序无法连接到数据库。当我检查 lens 中的值时,似乎添加了一个换行符,但在同一个秘密的类似集群中不存在该换行符
jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test
deirdre$ echo jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test | base64 | tr -d "\n"
amRiYzpwb3N0Z3Jlc3FsOi8vdGVzdC54eHh4eHh4eC5ldS13ZXN0LTIucmRzLmFtYXpvbmF3cy5jb20vdGVzdAo=
我做错了什么吗?还是 /?
有问题
问题是 base64 添加换行符是为了与具有最大行宽的旧系统兼容。您可以将 -w 0 选项添加到 base64 命令以更改行为,使其不再添加新行。
在您的示例中,这将是
echo "jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test" | base64 -w 0
这导致
amRiYzpwb3N0Z3Jlc3FsOi8vdGVzdC54eHh4eHh4eC5ldS13ZXN0LTIucmRzLmFtYXpvbmF3cy5jb20vdGVzdAo=
编辑:
printf "%s" jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test | base64 -w 0
产生正确的输出,它在 base64 编码的字符串中添加了一个额外的换行符,这显然是 url 被识别为正确结束所必需的
您可以使用
轻松解决这些问题
echo -n "string" | base64
"echo -n" 删除结尾的换行符。
您还可以看到我对以下问题的最后回答
我正在尝试在 linux 的命令行中使用 base64 对数据库字符串进行编码。
完成后,我将值添加到 kubernetes 中的秘密,但由于未接受 db 字符串,我的应用程序无法连接到数据库。当我检查 lens 中的值时,似乎添加了一个换行符,但在同一个秘密的类似集群中不存在该换行符
jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test
deirdre$ echo jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test | base64 | tr -d "\n"
amRiYzpwb3N0Z3Jlc3FsOi8vdGVzdC54eHh4eHh4eC5ldS13ZXN0LTIucmRzLmFtYXpvbmF3cy5jb20vdGVzdAo=
我做错了什么吗?还是 /?
有问题问题是 base64 添加换行符是为了与具有最大行宽的旧系统兼容。您可以将 -w 0 选项添加到 base64 命令以更改行为,使其不再添加新行。
在您的示例中,这将是
echo "jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test" | base64 -w 0
这导致
amRiYzpwb3N0Z3Jlc3FsOi8vdGVzdC54eHh4eHh4eC5ldS13ZXN0LTIucmRzLmFtYXpvbmF3cy5jb20vdGVzdAo=
编辑:
printf "%s" jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test | base64 -w 0
产生正确的输出,它在 base64 编码的字符串中添加了一个额外的换行符,这显然是 url 被识别为正确结束所必需的
您可以使用
轻松解决这些问题echo -n "string" | base64
"echo -n" 删除结尾的换行符。
您还可以看到我对以下问题的最后回答