Tengo una clave pública generada con ssh-keygen
y me pregunto cómo obtengo información sobre la longitud de la clave con openssl?
Tengo una clave pública generada con ssh-keygen
y me pregunto cómo obtengo información sobre la longitud de la clave con openssl?
Con openssl
, si su clave privada está en el archivo id_rsa
, entonces:
openssl rsa -text -noout -in id_rsa
imprimirá el contenido de la clave privada, y la primera línea de salida contiene el tamaño del módulo en bits. Si la clave está protegida por una frase de contraseña, tendrá que escribirla, por supuesto.
Si solo tiene la clave pública, OpenSSL no le ayudará directamente. @Enigma muestra la línea de comando adecuada (con ssh-keygen -lf id_rsa.pub
). Aún puedes hacer eso con OpenSSL de la siguiente manera:
Abra el archivo de clave pública con un editor de texto. Encontrarás algo como esto:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDo2xko99piegEDgZCrobfFTvXUTFDbWT
ch4IGk5mk0CelB5RKiCvDeK4yhDLcj8QNumaReuwNKGjAQwdENsIT1UjOdVvZOX2d41/p6J
gOCD1ujjwuHWBzzQvDA5rXdQgsdsrJIfNuYr/+kIIANkGPPIheb2Ar2ccIWh9giwNHDjkXT
JXTVQ5Whc0mGBU/EGdlCD6poG4EzCc0N9zk/DNSMIIZUInySaHhn2f7kmfoh5LRw7RF3c2O
5tCWIptu8u8ydIxz9q5zHxxKS+c7q4nkl9V/tVjZx8sneNZB+O79X1teq7LawiYJyLulUMi
OEoiL1YH1SE1U93bUcOWvpAQ5 [email protected]
Con su mouse, seleccione los primeros caracteres del blob central ( después de el ssh-rsa
); esto es Base64 y OpenSSL puede descodificar eso:
echo "AAAAB3NzaC1yc2EAAAADAQABAAABAQDDo2xko99piegEDgZC" | openssl base64 -d | hd
OpenSSL es delicado, él requerirá que ingrese no más de 76 caracteres en una línea, y el número de caracteres debe ser un múltiplo de 4. La línea de arriba imprimirá esto:
00000000 00 00 00 07 73 73 68 2d 72 73 61 00 00 00 03 01 |....ssh-rsa.....|
00000010 00 01 00 00 01 01 00 c3 a3 6c 64 a3 df 69 89 e8 |.........ld..i..|
00000020 04 0e 06 42 |...B|
Esto se lee como tal:
00 00 00 07 The length in bytes of the next field
73 73 68 2d 72 73 61 The key type (ASCII encoding of "ssh-rsa")
00 00 00 03 The length in bytes of the public exponent
01 00 01 The public exponent (usually 65537, as here)
00 00 01 01 The length in bytes of the modulus (here, 257)
00 c3 a3... The modulus
Por lo tanto, la clave tiene el tipo RSA y su módulo tiene una longitud de 257 bytes , excepto que el primer byte tiene un valor "00", por lo que la longitud real es de 256 bytes (ese primer byte se agregó así que que el valor se considera positivo, porque las reglas de codificación internas exigen enteros firmados , el primer bit que define el signo). 256 bytes son 2048 bits.