Яке значення знака рівності = або == в кінці відкритого ключа SSH?


39

Я щойно помітив, що більшість ssh pubkeys в моїх санкціонованих_кеях закінчуються на == або =

Напр

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

Однак сьогодні я побачив улюбленця без знака рівності наприкінці. Також я зауважив, що єдине місце, де коли-небудь трапляється в пабі, - це в кінці і ніде більше.

Тепер мені просто цікаво, що означає значення нуля, одного чи двох рівних знаків наприкінці ключа паба?

Відповіді:


50

Я вважаю, що технічних причин немає, це лише артефакт Base64 та довжина струни. Спробуйте це з будь-яким базовим кодером 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
+ Це базове кодування64, нічого особливого в цьому немає. Стаття у Вікіпедії на Base64 # Padding
Chris S

2
Цікаво, що відповідний RFC ietf.org/rfc/rfc4716.txt не згадує про це, що може підказати, що ви праві.
dunxd

@dunxd Я сканував лише через цей RFC, але я вважаю, що це стосується файлу .pub, а не authorized_keysфайл, хоча, думаю, така ж ситуація стосується. Оскільки ключовим є бінарні дані, але файл повинен бути текстовим, Base64 вирішує цю проблему
Smudge

5
@dunxd: RFC дійсно говорить про те, що він використовує кодування Base64, і читаючи про Base64 дає зрозуміти, що це кінець =.
Крістофер Хаммарстрем

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.