LINUX.ORG.RU
ФорумAdmin

Как рассчитывается sha256 публичного ключа ssh?

 


0

1

Поставил openssh-server, по пути /etc/ssh/ssh_host_rsa_key.pub лежит ключ:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC0cTjeN1gfUSAnAU67adXdeKCtlo9IU/F+SpWrSqtAOEG5w+QRueuFmKIHBguoXAfFOpaVkrF7s7JNXysR4lTJ7FAWjxLT/jMy82F+6LGaz41yGMBd+YzTrlD95G4OVZ/I+/rNojOGOUeYqTJdNu2hlep5IJuWuMY21wvn5ii5fWmkmSqz7/t5UL9UXknGqbeJntRNOfUjaQqBuQb3xvIfLBEqXVKyqq14hRZbo0OEa3EXMeOZlD7oqLsDn493af5u1+ZeVIm/EhEshyz1CoubXEeDHFiJ3WoU8bpxbAMVWnsSevhjG9jIN+N1bPentyMmmZCoFpwm8SF5qdU/Fgro1QQg8DfzSDMWlYTzMUXRJHwG7jiI6A/mpYGW4ncFWU6nVmaZdvPU5bBXVUoU9UyCUG9yGQ+18tLsCHOW1NdMY8b7cT+GWOFLDMr8rQ1L3UfUKOH5vzfF+fjBbEDMAscq1484S9rt+OrpZ/Cb4rmrfthJSGhuNpIgQZEVAJlE8dc= root@petka-VirtualBox

Делаю отпечаток ключа

ssh-keygen -lv -f /etc/ssh/ssh_host_rsa_key.pub

И получаю

3072 SHA256:PT4NI9dIisG4kN5JeCVMaIhiEvfaP28VvlM0T03HQD0 root@petka-VirtualBox (RSA)
+---[RSA 3072]----+
|oo.+o .      .o+ |
|=oo+.=         E=|
|+.+ = o   .    oo|
| . B o o +.oo . .|
|  o = . S.Bo.+   |
|     .   +o=. .  |
|      o  .oo.    |
|       o. o.     |
|       ..  .     |
+----[SHA256]-----+

Как получилось PT4NI9dIisG4kN5JeCVMaIhiEvfaP28VvlM0T03HQD0 ? Попробовал взять публичный ключ и вставить в онлайн sha256 и получаю не то 84c2c8b771edc59255047d09dd8e45d349ec41008fe376484117bfe6b01a2518


лежит ключ:

Это не твой ключ. Это его base64 представление.

javascript
()

Как считается не знаю, но есть уточнение:

1) традиционные считалки sha256 дают ответ либо в двоичном виде (не текст) либо в шестнадцатиричном формате (как твой хэш внизу), а ssh его пишет в base64 (легко отличить: используется и цифры и весь алфавит и заглавные и строчные буквы, а в шестнадцатиричном только 0-9 и a-f)

2) исходные данные для хэша скорее всего нужны двоичные (а в key.pub файле они тоже в base64).

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

А вот так совпадение есть:

$ echo -n PT4NI9dIisG4kN5JeCVMaIhiEvfaP28VvlM0T03HQD0= | base64 -d | hd
00000000  3d 3e 0d 23 d7 48 8a c1  b8 90 de 49 78 25 4c 68  |=>.#.H.....Ix%Lh|
00000010  88 62 12 f7 da 3f 6f 15  be 53 34 4f 4d c7 40 3d  |.b...?o..S4OM.@=|
00000020
$ echo AAAAB3NzaC1yc2EAAAADAQABAAABgQC0cTjeN1gfUSAnAU67adXdeKCtlo9IU/F+SpWrSqtAOEG5w+QRueuFmKIHBguoXAfFOpaVkrF7s7JNXysR4lTJ7FAWjxLT/jMy82F+6LGaz41yGMBd+YzTrlD95G4OVZ/I+/rNojOGOUeYqTJdNu2hlep5IJuWuMY21wvn5ii5fWmkmSqz7/t5UL9UXknGqbeJntRNOfUjaQqBuQb3xvIfLBEqXVKyqq14hRZbo0OEa3EXMeOZlD7oqLsDn493af5u1+ZeVIm/EhEshyz1CoubXEeDHFiJ3WoU8bpxbAMVWnsSevhjG9jIN+N1bPentyMmmZCoFpwm8SF5qdU/Fgro1QQg8DfzSDMWlYTzMUXRJHwG7jiI6A/mpYGW4ncFWU6nVmaZdvPU5bBXVUoU9UyCUG9yGQ+18tLsCHOW1NdMY8b7cT+GWOFLDMr8rQ1L3UfUKOH5vzfF+fjBbEDMAscq1484S9rt+OrpZ/Cb4rmrfthJSGhuNpIgQZEVAJlE8dc=
| base64 -d | sha256sum
3d3e0d23d7488ac1b890de4978254c68886212f7da3f6f15be53344f4dc7403d  -

Вкратце, нужно следить за тем, чтобы декодировать base64, прежде чем сравнивать ответы.

AITap ★★★★★
()
Ответ на: комментарий от AITap

Еще такой вопрос у изображения отпечатка вверху RSA 3072 - это алгоритм получения публичного ключа? А внизу SHA256 - алгоритм получения отпечатка ключа?

KRex
() автор топика

cat | base64 -d | sha256sum | xxd -r -p - | base64

Quote
()
Ответ на: комментарий от KRex

нет никаких отпечатков, то сам ключ. просто хранится в кодировке base64, потому как так удобно его копировать и вставлять куда нипопадя, если бы там лежали бинарные данные, то нельзя бы было их передать по интернету, клиент и сервер пытались бы их конвертировать в какую-то кодировку, типа ascii, windows-1251, utf-8…

tz4678_2
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.