อะไรคือความหมายของเครื่องหมายเท่ากับ = หรือ == ในตอนท้ายของกุญแจสาธารณะ SSH?


37

ฉันเพิ่งสังเกตเห็นว่า ssh pubkeys ส่วนใหญ่ใน Author_keys ของฉันจบลงที่ == หรือ =

เช่น

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

อย่างไรก็ตามวันนี้ฉันเห็น pubkey ที่ไม่มีเครื่องหมายเท่ากับในตอนท้าย นอกจากนี้ฉันสังเกตเห็นว่าที่เดียวที่มี = เกิดขึ้นใน pubkey สิ้นสุดและไม่เคยไปที่อื่น

ตอนนี้ฉันแค่อยากรู้อยากเห็นเกี่ยวกับความหมายของศูนย์คือหนึ่งหรือสองสัญญาณเท่ากับในตอนท้ายของคีย์ผับ?

คำตอบ:


49

ฉันเชื่อว่าไม่มีเหตุผลทางเทคนิคเป็นเพียงสิ่งประดิษฐ์ของ 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 ไม่มีอะไรพิเศษเกี่ยวกับมัน บทความ Wikipedia บน Base64 # Padding
Chris S

2
น่าสนใจว่า RFC ietf.org/rfc/rfc4716.txt ที่เกี่ยวข้องไม่ได้พูดถึงเรื่องนี้ซึ่งอาจแนะนำให้คุณถูกต้อง
dunxd

@dunxd ฉันสแกนเฉพาะผ่าน RFC นั้น แต่ฉันเชื่อว่าหมายถึงไฟล์. pub แทนที่จะเป็นauthorized_keysไฟล์ถึงแม้ว่าฉันคิดว่าสถานการณ์เดียวกันจะมีผล เนื่องจากคีย์เป็นข้อมูลไบนารี แต่ไฟล์ต้องเป็นข้อความ Base64 แก้ปัญหาดังกล่าวได้
Smudge

5
@dunxd: ผู้ RFC ไม่บอกว่ามันใช้การเข้ารหัส Base64 และอ่านเกี่ยวกับ Base64 =ทำให้มันชัดเจนว่ามันแผ่นจบลงด้วยการ
Christoffer Hammarström

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.