¿Cómo se calcula una huella digital de clave pública SSH?

1

Tengo una clave pública como la siguiente cadena codificada de 64 bytes

AAAAB3NzaC1yc2EAAAADAQABAAABAQDapfZSmaVBZimVC7YAsISc+fKzuhbVmmbJNYELWov4ZVbdbFxf790xC0sKQTmbe1iDt25DdsandggApKZh6yvWD0Li5RV+h5wV6chTNwOUe6A7Q4Y4nbMozxTzT0vpMOzZv8+RffzbSnS9GVin/4BACnih10tYzwgCe6y3ei3E5hytSGMkviYIcRQ5x4W2KgSa+BXRSGnpYU69u/b/uF7KDaIhcMqenZBy5YKt4nBYnbKFAgUk/yZRrPq9knVqXO+cQ3ZZlF1KNnrx+o3oR9OqtgjqFyXMyFIiT4oqtXXiVNmoc5C+kg7pDxR4Fcr15xTJpZl8kc8qt+WS5QpLgJjT

cuando hago un resumen de sha256 en python e imprimo el resultado en base64 de esta manera:

sha256 = hashlib.sha256()
sha256.update(plaintext.encode())
hash_sha256 = sha256.digest()
print(base64.b64encode(hash_sha256))

Tengo una huella digital diferente a la que tengo

ssh-keygen -lf key.pub

Pensé que la huella digital de sha256 era solo la sha256 de la clave pública ... También intenté agregar exactamente lo que está en el archivo key.pub , es decir:

ssh-rsa ... user@host

pero también obtengo un resultado diferente

Entonces, ¿cómo se calcula exactamente la huella digital? ¿Lo mismo se aplica a MD5?

    
pregunta Guerlando 26.02.2017 - 19:44
fuente

1 respuesta

3

Lamentablemente, no mostró el código completo, es decir, no dejó claro de dónde proviene plaintext en su código. Supongo que no descodificó la clave pública codificada en base64 primero, sino que simplemente introdujo la clave codificada directamente en el resumen. Los siguientes trabajos para mí:

b64pubkey='AAAAB3Nz....'  # base64 encoded public key
sha256 = hashlib.sha256()
sha256.update(base64.b64decode(b64pubkey))
hash_sha256 = sha256.digest()
print(base64.b64encode(hash_sha256))
    
respondido por el Steffen Ullrich 26.02.2017 - 20:13
fuente

Lea otras preguntas en las etiquetas