getInstance()에 PBKDF2WithHmacSHA1을 전달할 때 계속 NoSuchAlgorithmExeception을받습니다.SecretKeyFactory가있는 NoSuchAlgorithmException
왜 이런 일이 발생합니까? 나는 수입품을 놓치고 있습니까?
import javax.crypto.*;
import javax.crypto.spec.*;
import java.security.SecureRandom;
import java.util.Scanner;
import java.security.spec.*;
import java.security.AlgorithmParameters;
import javax.crypto.SecretKeyFactory.*;
class AES
{
static public String encrypt(String input, String password)
{
SecureRandom random = new SecureRandom();
byte salt[] = new byte[8];
random.nextBytes(salt);
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, 65536, 256);
SecretKey tmp = factory.generateSecret(spec);
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret);
AlgorithmParameters params = cipher.getParameters();
byte[] iv = params.getParameterSpec(IvParameterSpec.class).getIV();
byte[] ciphertext = cipher.doFinal(input.getBytes("UTF-8"));
String text = new String(ciphertext, "UTF-8");
return text;
}
}
또한 SHA1 대신 SHA2를 사용할 수 있습니까?
하는 오라클 JDK 또는 오픈 JDK를 사용하고이 코드를 사용? –
Java Cryptographic Extension을 설치해야 할 수 있습니다. http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html#SunJCEProvider – pedrofb