Criptografia

8 respostas
M

Pessoal,

estou desenvolvendo uma aplicação que vai usar criptografia RSA-2048, só que o cliente possui um hardware que gera o par de chaves. A chave pública ele passou para mim, e pediu que eu a usasse para criptografar os arquivos que o sistema vai enviar. Como eu faço para criptografar um arquivo utilizando essa chave e o algoritmo rsa?
A propósito, essa chave é uma string.

8 Respostas

E

Perguntinha - ele mandou a chave pública neste formato aqui?

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5F3OcVyc93DPSYgltiYN6zkwM
Aq30nGq1j8PSJbfqu99q1xwprK0Uh078d09piTrOwjdmqUUHjHhJqSdeSbnF0oYp
XIQLXUb01wMfB6pKpfOHpLtDjAKJBeEfIK5Zig5nF1cQrKTIlR+LLR+7m0u5UDGB
rO7yvd5dYDJAKh9BawIDAQAB
-----END PUBLIC KEY-----
M

Na verdade ele n me passou a chave publica ainda, mas vai me passar. Assim n sei te responder se o formato é esse.

E

Se for nesse formato (PEM), use o BouncyCastle :

http://www.bouncycastle.org/

M

estou tentando fazer pelo SecretKeySpec, você sabe me dizer se eu tenho como fazer através dele?

E

SecretKeySpec não serve para usar com RSA. Ele requer algoritmos simétricos, como AES.

M

uhm…então com o BouncyCastle eu consigo gerar uma criptografia usando uma chave publica e não gerando uma?

von.juliano

Suponho que ele vai te mandar o arquivo com a chave publica. Assim você lê a chave:

File f = new File("publicKey.der"); byte[] encodedKey = new byte[(int) f.length()]; new FileInputStream(keyFile).read(encodedKey); Agora você vai criar o objeto PublicKey para poder encriptar o arquivo:

X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(encodedKey); KeyFactory factory = KeyFactory.getInstance("RSA"); PublicKey pk = factory.generatePublic(publicKeySpec); Só falta criar a instância da classe Cipher, usando o RSA:

Cipher cipher = Cipher.getInstance("RSA");E com ela, criptografar e salvar o arquivo:

cipher.init(Cipher.ENCRYPT_MODE, pk); CipherOutputStream os = new CipherOutputStream(new FileOutputStream(out), cipher); os.write(aesKey); os.close();
Vê se ajuda! Flw! :thumbup:

M

Oi von.juliano,

tentei fazer a criptografia da forma que você me enviou e está ocorrendo o seguinte erro:

unknown object in factory: org.bouncycastle.asn1.DERInteger

o arquivo que me passaram é publickey.bin.

Sabe me dizer o que pode ser?

Criado 25 de agosto de 2010
Ultima resposta 15 de set. de 2010
Respostas 8
Participantes 3