Docker .config.json中密码Base64存储异常问题咨询
Docker Base64 密码存储差异的原因
首先,咱们先把核心差异点拆解清楚:
- Docker 的
auth字段是username:password组合字符串的 Base64 编码,编码的是原始字符串,不包含任何额外的换行符。 - 你使用
base64 <<< @命令时,bash 的 here-string(<<<)语法会自动在输入的字符串末尾追加一个换行符(\n),所以你实际编码的内容是@\n(@ 字符加上换行),而非纯@。
我们可以用命令直接验证这两种情况:
编码纯
@(不带换行):echo -n "@" | base64输出结果就是
QA==,和你在.docker/config.json中看到的完全一致。编码带换行的
@(即@\n):echo "@" | base64 # 效果等同于 base64 <<< @输出结果是
QAo=,这和你自己计算的结果完全匹配。
至于 Docker 的处理逻辑:当你通过 docker login 输入密码时,Docker 会读取你输入的原始密码内容(不会额外添加换行符),然后和用户名拼接成 username:password 后再进行 Base64 编码。你这里的 auth 是 QA==,说明最终拼接的字符串就是纯 @——大概率是你登录时跳过了用户名输入(直接回车),部分 Docker 版本在处理空用户名时会简化为仅编码密码内容,不过这不是重点,核心差异已经明确:你的命令因为自动添加了换行符导致编码结果不同,而 Docker 编码的是无换行的原始密码字符串。
内容的提问来源于stack exchange,提问作者Node.JS
相关产品推荐
相关产品推荐

