Рассчитайте отпечаток открытого ключа ssh в base64, почему у меня есть дополнительный '='? - PullRequest
0 голосов
/ 26 июня 2019

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

Я копирую открытый ключ в кодировке base64, из 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 Ответ

2 голосов
/ 26 июня 2019

В этом нет ничего плохого, просто SSH по соглашению пропускает любые завершающие отступы. Вы можете удалить любые висячие = знаки самостоятельно; они не кодируют никаких данных.

Подпрограммы Python base64 реализуют стандартный алгоритм base64, который задан для возврата четного кратного четырех символов кодированных данных. Я полагаю, что происхождение от стандарта MIME для электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...