Ý nghĩa của dấu bằng = hoặc == ở cuối khóa công khai SSH là gì?


39

Tôi chỉ nhận thấy rằng hầu hết các pubkey ssh trong ủy quyền của tôi đều kết thúc vào == hoặc =

Ví dụ

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

Tuy nhiên hôm nay tôi thấy một con pubkey không có dấu bằng ở cuối. Ngoài ra tôi nhận thấy rằng nơi duy nhất mà an = từng xuất hiện trong pubkey nằm ở cuối và không bao giờ ở bất kỳ nơi nào khác.

Bây giờ tôi chỉ tò mò về ý nghĩa của số 0, một hoặc hai dấu bằng ở cuối khóa pub là gì?

Câu trả lời:


50

Tôi tin rằng không có lý do kỹ thuật, nó chỉ là một tạo tác của Base64 và độ dài của chuỗi. Dùng thử với bất kỳ bộ mã hóa 64 cơ sở nào

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]

Nhưng tôi có thể sai về điều đó


18
+ Đó là mã hóa base64, không có gì đặc biệt về nó. Bài viết trên Wikipedia về Base64 # Padding
Chris S

2
Điều thú vị là RFC ietf.org/rfc/rfc4716.txt có liên quan không đề cập đến điều này, điều này có thể cho thấy bạn đúng.
dunxd

@dunxd Tôi chỉ quét qua RFC đó nhưng tôi tin rằng nó đề cập đến tệp .pub chứ không phải authorized_keystệp, mặc dù tôi nghĩ rằng tình huống tương tự cũng được áp dụng. Vì khóa là dữ liệu nhị phân nhưng tệp phải là văn bản, Base64 giải quyết vấn đề đó
Smudge

5
@dunxd: RFC có nói rằng nó sử dụng mã hóa Base64, và đọc về Base64 cho thấy rõ rằng nó đệm phần cuối =.
Christoffer Hammarström

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.