Estoy tratando de codificar una simple "prueba" de cadenas de un lado a otro.Java RSA Encryption
public static String encode(Key publicKey, String data) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
byte[] byteData = data.getBytes(); // convert string to byte array
Cipher cipher = Cipher.getInstance(ALGORITHM); // create conversion processing object
cipher.init(Cipher.ENCRYPT_MODE, publicKey); // initialize object's mode and key
byte[] encryptedByteData = cipher.doFinal(byteData); // use object for encryption
return new String(encryptedByteData); // convert encrypted byte array to string and return it
}
public static String decode(Key privateKey, String data) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
byte[] byteData = data.getBytes(); // convert string to byte array
Cipher cipher = Cipher.getInstance(ALGORITHM); // create conversion processing object
cipher.init(Cipher.DECRYPT_MODE, privateKey); // initialize object's mode and key
System.out.println(byteData.length);
byte[] decryptedByteData = cipher.doFinal(byteData); // use object for decryption
return new String(decryptedByteData); // convert decrypted byte array to string and return it
}
Sin embargo, aunque el cifrado funciona bien (algoritmo es "RSA"), cuando se trata de descifrar la cadena acabo recibido de cifrado de "prueba", consigo siguiente excepción:
javax.crypto.IllegalBlockSizeException: datos no debe ser superior a 256 bytes
¿Debo dividir los bytes cifrados en trozos de 256 con el fin de ser capaz de descifrarlo?
¡Ah, perfecto, gracias, funciona a la perfección! Sí, creo que la corrupción es cuando convierto la matriz de bytes cifrados en una cadena. – arik