2009-06-17 6 views
2

Voici la partie chiffrement de mon code. Il compile bien mais échoue avec cette exception à l'exécution:L'utilisation de Java crypto conduit à NoSuchAlgorithmException

import java.util.Random; 
import javax.crypto.Cipher; 
import javax.crypto.SecretKey; 
import javax.crypto.SecretKeyFactory; 
import javax.crypto.spec.PBEKeySpec; 
import javax.crypto.spec.PBEParameterSpec; 

... 

byte[] salt = new byte[8]; 
Random rand = new Random(); 
rand.nextBytes(salt); 

PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray()); 
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithSHAAndTwofish-CBC"); 
SecretKey key = keyFactory.generateSecret(keySpec); 
PBEParameterSpec paramSpec = new PBEParameterSpec(salt, 1000); 

Cipher cipher = Cipher.getInstance("PBEWithSHAAndTwofish-CBC"); 
cipher.init(Cipher.ENCRYPT_MODE, key, paramSpec); 
byte[] ciphertext = cipher.doFinal(plaintext); 

Cet algorithme ne vient pas avec Java 1.5? Cela ne me dérange pas d'utiliser un autre algorithme, je ne sais pas ce qui est disponible. J'espère que je n'ai pas besoin d'utiliser une bibliothèque externe comme bouncycastle, parce que j'ai lutté pendant des jours pour essayer de le faire fonctionner (en l'incluant dans mon application .jar, cela déclenche une erreur "Invalid File Digest") .

Répondre

2

On dirait que vous devrez peut-être utiliser un autre chiffre si vous ne souhaitez pas utiliser une bibliothèque externe comme BouncyCastle.

Voir the documentation about Sun crypto providers pour plus de détails sur ce qui est pris en charge dès la sortie de la boîte.

+0

Vous bénisse! C'est exactement ce dont j'avais besoin. Il est dommage que je devrais utiliser des algorithmes obsolètes comme DES, mais il semble bien fonctionner, donc c'est assez bon pour mes fins, merci beaucoup. –

+0

AES est plutôt bon, sauf pour la porte arrière que la NSA a mise là-bas. : blackhelicopters: – stimms

Questions connexes