Chave pública no formato hexadecimal, conversão para base64

3

Oi eu sou novo em cryptogragraphy e não tenho idéia de como fazer isso. Então eu recebo uma chave pública de uma sessão Putty e parece assim:

0x23,0xa69e43f72f1d8f07a6baae6ea0b0ce81cbe949345a0a5e307ae89e9cf58b20a17571af39e951faf61c45ef2ca9e21897eb9bc226473783ed9c3f6e30c4a84fa625373af96f41f8d9670484b52a33072eae6bb5433a2f00c672c20d7a03636a1b26af15b0d3ed376b9699e8653caa198637be88282333e8038bed63b9a2c6d179

pesquisando na Internet eu encontrei após Thread no qual o mesmo formato aparece, então eu sei que o primeiro valor hexadecimal é o expoente e o segundo valor é o módulo. Mas eu não encontrei nada sobre como usar os dois para obter uma chave pública simples. link

Minha pergunta é: Como eu converto a chave em um padrão openssh fromat ergo base64?

espero que alguém possa ajudar.

    
por almightyBob 21.09.2011 / 10:38

2 respostas

4

A maneira usual de converter chaves entre diferentes formatos é usar os programas de geração de chaves dos programas correspondentes, que geralmente também têm alguma opção de conversão.

No seu caso, uma chave Putty pode ser convertida em outros formatos pelo uso do programa PuttyGen.

A documentação explica como fazer isso em uma GUI maneira (você precisa da chave pública para colar no formato do arquivo authorized_keys ).

Usando as chaves ssh do PuTTY com o OpenSSH no Ubuntu parece mostrar uma forma de linha de comando para fazer isso também:

puttygen /path/to/puttykey.ppk -L > ~/.ssh/id_rsa.pub

(Eu não tentei isso, e um dos comentários lá diz que não funciona assim - dê uma olhada na documentação.)

    
por 21.09.2011 / 14:35
1

Este é um processo de dois estágios. Primeiro converta seu hex em matrizes de bytes. Segundo, converta seus arrays de bytes em strings Base64. Você provavelmente encontrará funções de biblioteca para ajudar com Base64 e conversores são comuns na web. Eu suponho que você pode fazer hexadecimais para conversões de byte ou uma função de biblioteca pode estar disponível. Tenha cuidado para que a função da biblioteca não converta apenas os caracteres ASCII para hexadecimal, ou seja, que sua string "0x23" seja convertida em { 0x23 } e não { 0x32, 0x33 } .

    
por 21.09.2011 / 13:37