ssh-keygen -lf ssh_host_rsa_key.pub देता है:

2048 SHA256:nVDFXqK06A4dwQYjBR3MHglFllTCjSHVNgYcCeRCNaQ root@tianhe-windy (RSA)

फिर मैं अपने आप sha256 फ़िंगरप्रिंट की गणना करने का प्रयास करता हूं।

cat ssh_host_rsa_key.pub देता है:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/Ukz/o8b2L4fYyACOJOnFh8KOE/DypW9Dt3s8gZqKTb3W2BPmghLZyFeMQAjpVLJ/z414ydvb67AE9nyOQq1oMRbAyjbu97ocJ4UHXM6UO0wSRUF/fwtxfPju2p2hbVN7PqCV5+3cDUEIR1mVM8j6sdT7YbMTsZJab9gDlLD76ZKLCYLR1GSHNbxDp4DpMAkJsoS8F6ee+OwV6SiDvI3N6XDwrAASLNy09s2eid3H1YUSq276J5TLsZiKMPDgs7O3Tw2uMPkdzTdWSYJ/w0hyVO5YZW44JzSxg3PubV08eHPQWi17RwT7fa+QPvRw87YnACzFusZHOxQDxzQfCohH root@tianhe-windy

मैं बेस 64 एन्कोडेड सार्वजनिक कुंजी को A से H तक कॉपी करता हूं, कोई सफेद जगह नहीं।

तब मैं करता हूं:

import hashlib
import base64

b64pubkey = 'AAAAB3NzaC1yc2EAAAADAQABAAABAQC/Ukz/o8b2L4fYyACOJOnFh8KOE/DypW9Dt3s8gZqKTb3W2BPmghLZyFeMQAjpVLJ/z414ydvb67AE9nyOQq1oMRbAyjbu97ocJ4UHXM6UO0wSRUF/fwtxfPju2p2hbVN7PqCV5+3cDUEIR1mVM8j6sdT7YbMTsZJab9gDlLD76ZKLCYLR1GSHNbxDp4DpMAkJsoS8F6ee+OwV6SiDvI3N6XDwrAASLNy09s2eid3H1YUSq276J5TLsZiKMPDgs7O3Tw2uMPkdzTdWSYJ/w0hyVO5YZW44JzSxg3PubV08eHPQWi17RwT7fa+QPvRw87YnACzFusZHOxQDxzQfCohH'
sha256 = hashlib.sha256()
sha256.update(base64.b64decode(b64pubkey))
b64fingerprint = base64.b64encode(sha256.digest())
print(b64fingerprint)

और पाओ

nVDFXqK06A4dwQYjBR3MHglFllTCjSHVNgYcCeRCNaQ=

ssh-keygen द्वारा संचित एक की तुलना करें:

nVDFXqK06A4dwQYjBR3MHglFllTCjSHVNgYcCeRCNaQ

ssh_host_ecdsa_key.pub की गणना करते समय मुझे एक अतिरिक्त = भी मिलता है।

मैंने क्या गलत किया?

1
Rick 26 जून 2019, 12:44

1 उत्तर

सबसे बढ़िया उत्तर

कुछ भी गलत नहीं है, यह सिर्फ इतना है कि सम्मेलन द्वारा एसएसएच किसी भी पिछली पैडिंग को छोड़ देता है। आप किसी भी अनुगामी = चिह्नों को स्वयं भी हटा सकते हैं; वे किसी भी डेटा को एन्कोड नहीं करते हैं।

पायथन base64 रूटीन मानक बेस 64 एल्गोरिथम को लागू करते हैं जो एन्कोडेड डेटा के चार वर्णों में से एक से अधिक को वापस करने के लिए निर्दिष्ट है। मूल ईमेल के लिए MIME मानक से हैं, मुझे विश्वास है।

2
tripleee 26 जून 2019, 12:51