Jakie jest znaczenie znaku równości = lub == na końcu klucza publicznego SSH?


39

Właśnie zauważyłem, że większość ssh pubkeys w moich uprawnionych kluczach kończy się na == lub =

Na przykład

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

Jednak dzisiaj widziałem klucz pubowy bez znaku równości na końcu. Zauważyłem również, że jedynym miejscem, w którym an = kiedykolwiek występuje w pubkey, jest koniec i nigdy nigdzie indziej.

Teraz jestem ciekawy, co oznacza zero, jeden lub dwa znaki równości na końcu klucza do pubu?

Odpowiedzi:


50

Uważam, że nie ma żadnego powodu technicznego, to tylko artefakt Base64 i długość łańcucha. Wypróbuj go z dowolnym koderem bazowym 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]

Ale mogę się mylić


18
+ To kodowanie base64, nic specjalnego. Artykuł w Wikipedii na temat Base64 # Padding
Chris S

2
Ciekawe, że odpowiedni RFC ietf.org/rfc/rfc4716.txt nie wspomina o tym, co może sugerować, że masz rację.
dunxd

@ Dunxd Skanowałem tylko przez ten RFC, ale uważam, że odnosi się to raczej do authorized_keyspliku .pub niż do pliku, chociaż myślę, że ta sama sytuacja ma zastosowanie. Ponieważ kluczem są dane binarne, ale plik musi być tekstem, Base64 rozwiązuje ten problem
Smudge

5
@dunxd: RFC mówi, że używa kodowania Base64, a czytanie o Base64 wyraźnie pokazuje, że wypełnia koniec =.
Christoffer Hammarström,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.