我命由我,不由天!


  • 搜索
prometheus docker golang linux kubernetes

命令行base64编码多一个换行

发表于 2020-11-28 | 分类于 linux | 0 | 阅读次数 1157

起因:

本来想用k8s的secret来存储数据库的用户和密码。需要使用base64编码,就随手使用了linux的命令行终端生成了echo "xxx" | base64,结果连接数据库始终连不上。想起来是运维给我默认的数据库名称加了个db_开头。然后改了数据库名称连上了。连正式环境的数据库,这时候密码是不一样的,发现也连不上开始。以为运维没给我开权限开好,但是使用mysql客户端能连上,说明不是运维的锅,然后还以为是pod里面的环境变量没有获取到,进入pod安装上vim,改了下代码,打印出来是有值的。就这样重复了好几遍始终不知道原因。又打印了下用户名和密码,发现用户名和密码之间有换行。
最后使用网页上的base64编码,才发现和终端编出来的不一样多个换行。

原因:

  1. 使用echo输出字符串时,如果没有-n参数会自动添加换行符
    所以正确使用为echo -n "xxx" | base64
  2. 编码字符长度不是3倍数事,用0代替,对应的输出字符为 =,所以实际 Base64 有65种不同的字符。因此 Base64 字符串只可能末尾出现一个或者两个 = ,中间是不可能出现 = 的。

u=924172131,707434813fm=26gp=0.jpg

  • 本文作者: Dante
  • 本文链接: https://gaodongfei.com/archives/命令行base64坑
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# linux
kubernetes安装最新步骤 centos7
kubectl使用技巧
  • 文章目录
  • 站点概览
Dante

Dante

119 日志
5 分类
5 标签
RSS
Creative Commons
0%
© 2023 Dante
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4
沪ICP备2020033702号