Infelizmente você não especificou em qual formato as chaves são armazenadas. Eu acho que você está se referindo à codificação de chave OpenSSH. Nesse formato, as chaves são armazenadas em blocos de dados codificados em base64. Dependendo da codificação ao criptografar, geralmente há algum tipo de preenchimento envolvido na criptografia de dados. Portanto, os dados resultantes são múltiplos do tamanho do bloco de criptografia.
As chaves do OpenSSH também podem incluir algum tipo de comentário e propriedades adicionais inseridas entre os marcadores ---- BEGIN SSH2 [PUBLIC|PRIVATE] KEY ----
e -----END RSA [PUBLIC|PRIVATE] KEY-----
. Veja RFC4716 .
Além disso, para a chave pública, o módulo e o expoente público são salvos, enquanto para a chave privada o expoente privado é salvo. Consulte a geração de chaves RSA na Wikipedia para obter detalhes sobre a base matemática. Existem muitos lugares na web que descrevem a conexão matemática entre essas chaves. Não tenho certeza se você precisa de uma cópia dessas explicações aqui.
Teoricamente, é possível calcular a chave privada a partir de informações da chave pública, mas isso é matematicamente muito mais difícil do que o contrário. Apenas considere a chave privada como a "fonte" que inclui todas as variáveis e a chave pública como resultado do cálculo. É fácil executar o cálculo repetidamente se você conhece todas as variáveis, mas sabendo apenas o resultado, é difícil obter todas as variáveis de origem. Esse também é o motivo pelo qual é suficiente salvar a chave privada em um local seguro. Você sempre pode usar a chave privada para recalcular a chave pública. Mas não o contrário - bem, teoricamente, você pode fazer isso, mas dependendo da duração da chave, isso pode levar muitos anos;).