Lamentablemente, no especificó en qué formato se almacenan las claves. Supongo que te estás refiriendo a la codificación de clave OpenSSH. En este formato, las claves se almacenan en bloques de datos codificados en base64. Dependiendo de la codificación al cifrar, generalmente hay algún tipo de relleno involucrado al cifrar datos. Por lo tanto, los datos resultantes son múltiplos del tamaño del bloque de cifrado.
Las claves OpenSSH también pueden incluir algún tipo de comentarios y propiedades adicionales insertadas entre los marcadores ---- BEGIN SSH2 [PUBLIC|PRIVATE] KEY ----
y -----END RSA [PUBLIC|PRIVATE] KEY-----
. Ver RFC4716 .
Además, para la clave pública se guardan el módulo y el exponente público, mientras que para la clave privada se guarda el exponente privado. Consulte la generación de claves RSA en Wikipedia para obtener detalles sobre la base matemática. Hay muchos lugares en la web que describen la conexión matemática entre estas claves. No estoy seguro si necesita una copia de estas explicaciones aquí.
Teóricamente es posible calcular la clave privada a partir de información de clave pública, pero hacer esto es matemáticamente mucho más difícil que al revés. Simplemente considere la clave privada como la "fuente" que incluye todas las variables y la clave pública como resultado del cálculo. Es fácil realizar el cálculo una y otra vez si conoce todas las variables, pero conocer solo el resultado es difícil obtener todas las variables de origen. Esta es también la razón por la cual es suficiente guardar la clave privada en un lugar seguro. Siempre puede usar la clave privada para volver a calcular la clave pública. Pero no al revés, bueno, teóricamente puede hacer esto, pero dependiendo de la longitud de la clave, esto puede llevar muchos años;).