SSH 公钥末尾的等号 = 或 == 是什么意思?

Luk*_*che 42 ssh public-key ssh-keys

我只是注意到我的authorized_keys 中的大多数ssh pubkeys 以== 或= 结尾

例如

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA9ZUwxXn2HZAAUswoaV8t2sQPvolVWDI053f0giNN154Zyi9FtWJKvyLHXoxW4IzFxgx+m6EYqXG/XCtfamLhwvGZv9FXkgQKeF6HJv/rjyKRBHPRyX0vV4S9uQU+xQV7f0Ock3urSzbUyoCgngA8Ax6AkYGmMTLLjx1HOBO/TJ477aysWt4IAg1gviT50I4xOYiHT4vC67czoDTnPl0UfKQJaM0+6WrneK7FJbd/8CAX7P7IxOhj1OxVbnEoh9FvecLbSDdOx/LF+kJcav/LThuoG7NR+Y+rS9lNkta3/KPi3IBMPum+bZpXJF7fkHl9Kx/iOMitT7KjNW/mty74xw== foo@bar
Run Code Online (Sandbox Code Playgroud)

但是今天我看到了一个结尾没有等号的公钥。我还注意到,在公钥中出现 = 的唯一地方是最后,而不会出现在其他任何地方。

现在我只是好奇公钥末尾的零、一个或两个等号是什么意思?

Smu*_*dge 53

我相信没有技术原因,它只是 Base64 和字符串长度的产物。尝试使用任何 base 64 编码器

1     -> MQ==     (1 characters, 2 equals)
12    -> MTI=     (2 characters, 1 equals)
123   -> MTIz     (3 characters, 0 equals)
1234  -> MTIzNA== (4 characters, 2 equals)
[repeat]
Run Code Online (Sandbox Code Playgroud)

但我可能错了

  • + 它是 base64 编码,没什么特别的。[关于 Base64#Padding 的维基百科文章](http://en.wikipedia.org/wiki/Base64#Padding) (18认同)
  • @dunxd:RFC 确实说它使用 Base64 编码,阅读 Base64 可以清楚地表明它用 `=` 填充结尾。 (5认同)
  • 有趣的是,相关的 RFC http://www.ietf.org/rfc/rfc4716.txt 没有提到这一点,这可能表明您是对的。 (2认同)