首页 > 解决方案 > Base64 编码正在添加一个新行

问题描述

我正在尝试在 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=

有什么我做错了吗?还是 / 有问题?

标签: kubernetesbase64

解决方案


问题是 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 

produces the correct output which adds an additional newline in the base64 encoded string which is apparently required for the url to be recognized as properly ended


推荐阅读