2009-06-17 3 views
2

여기 내 코드의 암호화 부분이 있습니다. 그것은 잘 컴파일하지만 런타임에 그 예외와 함께 실패합니다 :Java 암호화를 사용하면 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); 

이 알고리즘은 Java 1.5와 함께 제공되지 않습니까? 나는 다른 알고리즘을 사용하는 것에 신경 쓰지 않고 사용할 수있는 것을 모른다. 나는 bouncycastle과 같은 외부 라이브러리를 사용할 필요가 없기를 바란다. 왜냐하면 나는 쓸데없는 일을하려고 노력하고있다. (내 .jar 애플리케이션에 "잘못된 서명 파일 다이제스트"오류가 발생 함) .

답변

2

BouncyCastle과 같은 외부 라이브러리를 사용하지 않으려면 다른 암호를 사용해야 할 수도 있습니다.

즉시 지원되는 제품에 대한 자세한 내용은 the documentation about Sun crypto providers을 참조하십시오.

+0

축복합니다! 이것은 내가 필요한 것입니다. 그것은 내가 DES와 같은 오래된 알고리즘을 사용해야 할 필요가 있을지 모를 수치스러운 일이지만, 잘 돌아가는 것처럼 보이기 때문에 제 목적에 충분합니다. 정말 고마워요. –

+0

NSA가 뒷문에 넣은 것을 제외하면 AES는 꽤 좋습니다. : blackhelicopters : – stimms

관련 문제