ফানসিগুলির জন্য স্কটের লিঙ্কগুলি অনুসরণ করার পরে আমি ফর্ম্যাটটিতে একটি ওভারকিল ডিপ ডুব দিয়েছিলাম। TLDR:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
| "ssh-rsa" |exponent| modulus
আরএফসি 4231 ব্যবহৃত দুটি ডেটা প্রকারগুলি নির্দিষ্ট করে:
string
: নির্বিচারে দৈর্ঘ্য বাইনারি স্ট্রিং। স্ট্রিংগুলিতে নাল অক্ষর এবং 8-বিট অক্ষর সহ নির্বিচারে বাইনারি ডেটা থাকার অনুমতি দেওয়া হয়। তারা এর uint32
দৈর্ঘ্যযুক্ত হিসাবে সংরক্ষণ করা হয়
mpint
: দুটির পরিপূরক বিন্যাসে একাধিক নির্ভুলতা পূর্ণসংখ্যার প্রতিনিধিত্ব করে, স্ট্রিং হিসাবে সঞ্চিত, বাইট প্রতি 8 বিট, এমএসবি প্রথমে। [...]
আরএফসি 4253 সেকেন্ড 6.6 বলছে কীটি এনকোড হয়েছে:
"Ssh-rsa" কী বিন্যাসে নিম্নলিখিত নির্দিষ্ট এনকোডিং রয়েছে:
string "ssh-rsa"
mpint e
mpint n
এখানে 'ই' এবং 'এন' পরামিতি স্বাক্ষর কী ব্লব গঠন করে। [এড: তবে ব্লবটিতে স্ট্রিংও রয়েছে বলে মনে হচ্ছে "ssh-rsa"
...]
ফলাফল হিসাবে স্বাক্ষর নীচে এনকোড করা হয়েছে:
string "ssh-rsa"
string rsa_signature_blob
'Rsa_signature_blob' এর জন্য মান একটি স্ট্রিং ধারণকারী s হিসেবে এনকোডেড হয়েছে : [কি না জানি না গুলি হল এড।] (নেটওয়ার্ক বাইট অনুক্রমে যা একটি পূর্ণসংখ্যা, লেন্থ বা প্যাডিং, স্বাক্ষরবিহীন ছাড়া আর)।
"ssh-rsa"
স্ট্রিংটি ssh-rsa
রূপান্তরিত হয় \x00\x00\x00\x07ssh-rsa
, যা এর পরে এনকোড হয় AAAAB3NzaC1yc2E=
, সুতরাং সমস্ত ssh-rsa কী এর সাথে শুরু করা উচিত।
e
, পাবলিক এক্সপোনেন্ট
সাধারণত 3, 17, 257, 65537 এর মতো কিছু Those এই সংখ্যাগুলি নীচের মত এনকোড হয়ে যায় (উপরের দিক থেকে পিছন পিছন আসন সহ)
- 3 →
'\x00\x00\x00\x01\x03'
→AAAABAw
- 17 →
'\x00\x00\x00\x01\x11'
→AAAABEQ
- 257 →
'\x00\x00\x00\x02\x01\x01'
→AAAACAQE
- 65537 / 0x10001 →
'\x00\x00\x00\x03\x01\x00\x01'
→AAAADAQAB
সুতরাং, আপনি যদি "বিএডাব্লু" দেখেন তবে আপনার ঘাঁটিঘটিত 3 বা "DAQAB" = 65537 ছিল 37
n
, মডুলাস (আপনার দুটি গোপন প্রাথমিকের পণ্য, এটি ফ্যাক্টর!)
AAABAQ
উপরেরটির অর্থ হল আপনার মূল দৈর্ঘ্য 2048 বিট (এবং আপনার ঘাঁটিটি 6464 প্যাডিংয়ের কারণে DAQAB এর মতো ছিল)। বেস 64 এর পুরো বাকী অংশটি হ'ল, এর পরে আর কিছুই নেই।
অন্যান্য মডুলাসের উপসর্গগুলি সাধারণ হতে পারে:
AAAAg
1024 বিট, ই = 0x10001
AAAQI
: 2048 বিট, ই = 3
AAAAB3NzaC1yc2EAAAA