PBE를 사용하여 비밀 키를 생성하려하지만 SecretKeyFactory에 의해 생성 된 비밀 키는 입력 비밀번호와 정확히 같습니다. 다른 알고리즘, 반복 횟수 등을 시도했지만 여전히 동일하므로 여기에 단계가 빠져 있습니다.Java SecretKeyFactory 생성 키가 입력 비밀번호와 동일합니다.
public SecretKey generateKey(String password, String salt) {
char[] passChars = password.toCharArray();
byte[] saltBytes = salt.getBytes();
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithHmacSHA256AndAES_128");
PBEKeySpec keySpec = new PBEKeySpec(passChars, saltBytes, 2048, 128);
SecretKey secretKey = keyFactory.generateSecret(keySpec);
byte[] encodedKey = secretKey.getEncoded();
System.out.println("key: " + new String(encodedKey));
return new SecretKeySpec(encodedKey, "AES");
}
편집 : 나는 알고리즘 "PBKDF2WithHmacSHA1"를 사용하는 경우 다음 생성 된 키 암호가 서로 다른,하지만 어떻게 정확하게 입력 암호와 동일 키를 생성하고 사용하고 알고리즘을 올?
입력 데이터를 'SecretKey' 개체로 변환하는 것입니다. 여기에는 비밀 키 생성이 없습니다. – EJP
@EJB 그러면 알고리즘, 반복 횟수, 키 크기 등을 지정하는 요점은 무엇입니까? 이러한 매개 변수는 암호화/해독 할 때 사용됩니까? – joe
@joe 두 번째로 'Cipher # init'의 세 번째 매개 변수로 전달되어야합니다. 나는 또한 그것이 이상하다고 생각했다. 그러나 그것이 그것이있는 방식이다 (duh). –