Pour une classe Crypto, nous avons reçu un chiffrement DESede utilisant ECB sans bourrage => "6t8Z5bKl5ybJL + MiFerNBmiTDS7wlTEUdWNwJJApWmQ ==" qui est sous forme base64. On nous a donné des indices sur la clé et j'ai donc construit toutes les clés possibles (où toutes sont dans un format ASCII).Décryptage du chiffrement DESede avec NoPadding
String strToDecrypt="6t8Z5bKl5ybJL+MiFerNBmiTDS7wlTEUdWNwJJApWmQ==";
byte[] input = strToDecrypt.getBytes();
//Decrypt
Cipher b = Cipher.getInstance("DESede/ECB/NoPadding");
b.init(Cipher.DECRYPT_MODE, keySpec);
byte output[] = b.doFinal(input);
String out = new String(output);
System.out.println(new String(out));
Quand je lance ce code à l'aide de mes clés, je reçois un IllegalBlockSizeException que mon entrée n'est pas un multiple de 8 octets. Je suis confus quant aux «bases» à utiliser. Comme je l'ai dit plus haut, le texte chiffré est en base64 donc lors de l'exécution de Cipher.DECRYPT je devrais donner des clés dans une certaine "base" ou la chaîne que je veux déchiffrer dans une certaine base.
'getBytes()' ne sait pas votre chaîne est censé être codé en base64. Vous devez [décoder la chaîne en Base64] (https://stackoverflow.com/questions/469695/decode-base64-data-in-java) au lieu de simplement appeler 'getBytes()'. – Blorgbeard
Plus explicitement, 'byte [] input = Base64.getDecoder(). Décode (strToDecrypt);' – erickson
@erickson merci pour cela. Cela m'a donné une erreur mais en utilisant getMimeDecoder(). Decode (strToDecrypt) a fonctionné à la place. Toutes mes sorties sont comme "9 f8 uK = # g9S33". avec aucun texte en clair dans n'importe quelle position. Toutes mes clés sont en ASCII sous la forme "Êþº¾ÿÿÿÿÊþº¾ÿÿÿÿÊþº¾ÿÿÿÿ". Des suggestions sur ce que je fais mal? –