Gostaria de saber como é representado uma chave criptográfica no java, no caso uma chave privada. Há a interface Key que contém o método getEncoded() que retorna um array de bytes, se eu colocar esse array como parâmetro de um construtor BigInteger, irá ser criado um número enorme, pergunta: esse número seria a chave privada? No meu trabalho estamos tendo que implementar um algoritmo de derivação de chaves, a partir de uma dada chave privada, deve-se criar outras chaves derivadas, até aí tudo bem, porém, depois de criado a chave (no caso um outro número imenso) como eu passaria ela para alguma classe/interface que pudesse manuseá-la como PrivateKey, etc? Não consegui bons resultados usando um cast, também não sei se fiz da maneira correta. Por favor, me ajudem…
Problemas com chaves criptográficas
E
3 Respostas
T
Qual é o algoritmo usado? Simplesmente fazer um cast não funciona, porque a representação de uma PrivateKey é diferente para cada algoritmo (DSAPrivateKey, RSAPrivateKey etc.)
E cuidado - chaves privadas (algoritmos assimétricos, como RSA, DSA ou EC) não são chaves secretas (algoritmos simétricos, como AES, DES, RC4).
Não confunda as coisas.
Estude um pouco de ASN.1, e para poder manipular isso tudo, recomendo a biblioteca BouncyCastle ( http://www.bouncycastle.org ). Você vai ter de dar uma olhada nos PKCS# (veja o site da RSA Security ).
E
o algoritmo que eu estava testando era o RSA, bom, já achei uma solução, pode-se usar a classe PKCS8EncodedKeySpec que armazenaria a chave se ela estiver no formato PKCS8.
T
É isso aí.
Criado 27 de janeiro de 2005
Ultima resposta 28 de jan. de 2005
Respostas 3
Participantes 2
Alura Git Flow: entenda o que é, como e quando utilizar Entenda o que é Git Flow, como funciona seu fluxo com branches como Master, Develop, Feature, Release e Hotfix, além de vantagens e desvantagens.
Casa do Codigo Ontologias e Web Semantica: Do conceito a aplicacao Por Ivam Galvao Filho — Casa do Codigo