2013-06-07 2 views
1

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); 
+2

PBKDFv2 est un ** hash **. Il est (heureusement) mathématiquement impossible à décrypter. – SLaks

+2

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

+0

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. –

Répondre

1

Vous ne pouvez pas déchiffrer le premier bloc de texte chiffré crypté CBC si vous ne connaissez pas le IV.

Il est cependant peu probable que vous ne pouvez récupérer la valeur IV:

  • souvent la valeur IV est de 16 octets récupéré après les octets clé) générée à partir du PBKDF; L'IV est souvent préfixé au texte chiffré, ce qui donne lieu à un bloc d'ordures avant le texte complet pendant le déchiffrement;
  • pas sûr, mais la IV est également laissé de ou mis à une valeur constante, avec un tout-zéro IV étant le plus commun (ce qui est identique en mode CBC à ne pas utiliser de IV.)
+0

J'ai édité ma question, j'ai donné les détails sur les valeurs que je J'utilise pour décrypter. J'ai essayé vos suggestions mais je n'ai pas eu la bonne valeur. Comme je suis nouveau dans ce domaine de cryptage pouvez-vous suggérer ce que je fais est juste? Ce serait génial si vous pouvez me diriger vers un site Web où je peux apprendre sur le cryptage en utilisant pskc dans les détails – user966682

+0

Malheureusement, je suis auto-pensé, donc souvent je ne sais pas d'où proviennent mes informations. Je vais répondre à votre question également. –

Questions connexes