J'essaie de décrypter un texte crypté. J'ai la valeur de sel, le compte d'itération et la longueur de clé. Mais je n'ai pas la valeur du vecteur d'initialisation (IV), comment puis-je faire et décrypter cela. J'ai aussi une clé secrète.Comment décrypter le texte crypté pbkdf2 sans connaître l'IV
Pour le moment j'utilise une valeur IV aléatoire dont la taille est de 16 octets. Mais je ne suis toujours pas capable de déchiffrer la valeur correctement. Quelqu'un peut-il aider s'il vous plaît que je suis coincé avec cela depuis longtemps?
Voici les valeurs qui m'ont été données.
salt= EW0h0yUcDX72WU9UiKiCwDpXsJg=, Iteration=128,Keylenght=16.
MasterKeyName="Passphrase1", MACMethod algo = hmac-sha1, MACKey="jq/NdikC7AZf0Z+HEL5NrCICV8XW+ttzl/8687hVGHceoyJAaFws+111plQH 6Mlg" encrypted kae = "pM7VB/KomPjq2cKaxPr5cKT1tUZN5tGMI+u1XKJTG1la+ThraPpLKlL2plKk6vQE" and valuemac="lbu+9OcLArnj6mS7KYOKDa4zRU0=".
Secret key = "xxxxxxxxxxx".
Voici le code que j'utilise pour déchiffrer.
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(secretkey.toCharArray(), salt, iterationCount, keyStrength);
SecretKey tmp = factory.generateSecret(spec);
key = new SecretKeySpec(tmp.getEncoded(), "AES");
dcipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
AlgorithmParameters params = dcipher.getParameters();
iv = "0000000000000000".getBytes();
System.out.println("IV " + new sun.misc.BASE64Encoder().encodeBuffer(iv));
dcipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));
byte[] decryptedData = new sun.misc.BASE64Decoder().decodeBuffer(base64EncryptedData);
byte[] utf8 = dcipher.doFinal(decryptedData);
PBKDFv2 est un ** hash **. Il est (heureusement) mathématiquement impossible à décrypter. – SLaks
Lorsque vous décryptez, obtenez-vous 16 octets de déchets suivis par le message correctement décrypté? Si oui, alors les seize premiers octets du texte chiffré sont les IV. – rossum
S'il vous plaît ne pas être capable de décrypter sans exception ne signifie pas que vous avez trouvé la clé; tout texte chiffré avec les décryptes de taille de bloc corrects pour un chiffrement par bloc qui n'utilise pas un mode de chiffrement authentifié. Il décrypte juste à la poubelle. –