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


39

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

例如

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

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

现在我很好奇,发布密钥末尾的零,一或两个等号是什么意思?

Answers:


50

我相信没有技术上的原因,这仅仅是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]

但是我可能错了


18
+它是base64编码,没什么特别的。Wikipedia文章,关于Base64#Padding
Chris S,

2
有趣的是,相关的RFC ietf.org/rfc/rfc4716.txt并未提及这一点,这可能表明您是对的。
dunxd 2012年

@dunxd我只扫描了该RFC,但我相信这是指.pub文件而不是authorized_keys文件,尽管我认为同样的情况也适用。由于密钥是二进制数据,但文件必须是文本,因此Base64解决了该问题
涂抹

5
@dunxd:RFC确实说它使用Base64编码,并且阅读有关Base64的内容可以清楚地知道它以结尾=
ChristofferHammarström'2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.