Problemas com BigInteger e String (algoritmo RSA)

2 respostas
jpcasati

Galera, estou implementando um exemplo do RSA aki, deu td certo, mas na hora de mostrar o texto, c eu mando imprimir com o .toString(36) ele não mostra o texto que foi digitado e sim os Bytes em formato de string… olhem:

public String getTextoClaro(String claro){
        String str = "";
        
        BigInteger a = new BigInteger(claro.getBytes());

        System.out.println("MSG: " + a.toString(36));
        
        BigInteger b = a.modPow(getPublica().getPublicExponent(), getPublica().getModulus());
        
        System.out.println("Criptografada: " + b.toString(36));
        
        BigInteger c = b.modPow(getPrivada().getPrivateExponent(), getPrivada().getModulus());
        
        System.out.println("Decriptografada: " + c.toString(36));
        
        
        return str;
    }

Saída:

MSG: 3ssbl
Criptografada: 6on6aekjoxca7lcwjp61ttef8gjd9vedrhpz1v2jktb1m21cepsjos4d8rlfdi10oqaid2c8fibovinvtl875s7t8tsvexp8nn3
Decriptografada: 3ssbl

Criptografando e decriptografando ele está. Só falta parsear pro q eu quero!

vlw!

2 Respostas

jpcasati

Já resolvi

byte[] b2 = c.toByteArray();
        
        str = new String(b2);
O

Aviso 1: sempre que for trabalhar com conversão de String para byte array e vice-versa, fixe um charset, pois caso você pode ter problemas se for criptografar em um sistema operacional e descriptografar em outro (tipo Windows e Linux).

Aviso 2: para representar um byte array como string, utilize um algoritmo do tipo Base64:
http://www.wikihow.com/Encode-a-String-to-Base64-With-Java

Criado 3 de setembro de 2008
Ultima resposta 3 de set. de 2008
Respostas 2
Participantes 2