Qual é o significado de um sinal de igual = ou == no final de uma chave pública SSH?

39

Acabei de notar que a maioria das chaves de pub do ssh em minhas chaves_comutadas termina em == ou =

Por exemplo

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

No entanto, hoje eu vi uma pubkey sem sinal de igual no final. Também notei que o único lugar em que um = ocorre em um pubkey é no final e nunca em outro lugar.

Agora estou curioso para saber qual é o significado de zero, um ou dois sinais de igual no final de uma tecla de pub?

Lukas Loesche
fonte

Respostas:

50

Acredito que não há razão técnica, é apenas um artefato da Base64 e o comprimento da string. Experimente com qualquer codificador 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]

Mas eu posso estar errado sobre isso

mancha
fonte
18
+ É codificação base64, nada de especial nisso. Artigo da Wikipedia sobre Base64 # Padding
Chris S
2
Interessante que o RFC relevante ietf.org/rfc/rfc4716.txt não mencione isso, o que pode sugerir que você esteja certo.
22612 dunxd
@ Dunxd Eu só fiz a varredura através desse RFC, mas acredito que se refere ao arquivo .pub em vez do authorized_keysarquivo, embora eu ache que a mesma situação se aplica. Como a chave é dados binários, mas o arquivo deve ser texto, Base64 resolve essa questão
Smudge
5
@ Dunxd: O RFC diz que usa a codificação Base64, e a leitura sobre a Base64 deixa claro que ela acaba com o final =.
Christoffer Hammarström