Bonjour à tous,
J'ai un code me permettant de crypter un tableau de byte à l'aide d'une clé RSA:
Et pour le décodage:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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
Partager