Problème de cryptage/décryptage RSA en Java
Bonjour à tous,
J'ai un code me permettant de crypter un tableau de byte à l'aide d'une clé RSA:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] chumpData = new byte[CHUMP_SIZE];
int position = 0;
while(position < data.length) {
System.arraycopy(data, position, chumpData, 0, Math.min(data.length-position, CHUMP_SIZE));
byte[] codedChump = cipher.doFinal(chumpData);
System.arraycopy(codedChump, 0, encryptData, position, Math.min(encryptData.length - position, CHUMP_SIZE));
position += CHUMP_SIZE;
} |
Et pour le décodage:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] chumpData = new byte[CHUMP_SIZE];
int position = 0;
while(position < data.length) {
System.arraycopy(data, position, chumpData, 0, Math.min(data.length- position, CHUMP_SIZE));
System.arraycopy(data, position, chumpData, 0, Math.min(data.length-position, CHUMP_SIZE));
byte[] decodedChump = cipher.doFinal(chumpData);
System.arraycopy(decodedChump, 0, decodedData, position, decodedChump.length);
position += CHUMP_SIZE;
} |
La boucle while sert à contourner le fait que RSA veut que les données ait une taille bien précise pour pouvoir être décodées. A la base, je ne les avais pas, mais ça ne fonctionnait pas non plus. Cipher voulait des données d'une taille de 53 octets précisément.
Mais quand je veux décoder ce que je viens de coder, je récupère l'exception BadPaddingException avec le message Data must start with zero.
Est-ce que quelqu'un pourrait éclairer ma lanterne ?
Merci d'avance