아래 코드에서 128 * 8의 사용법은 누구에게 말해 줄 수 있습니까? 암호 암호화를위한 코드를 작성했지만이 128 * 8이 무엇을하는지 아직 알지 못합니다.PBKDF2WithHmacSHA1 혼동
이이 코드에서 반환으로 무엇을 얻을 수 있습니다 :
67a0759ac6266ca2156555426aae10b18c34b436ea036247e6c0e16cd8d4199b9df508c32cd14e50a533ac00c071888cb8167982d9bf22a89ccd1c02a9d9c76d4e5fb5c3be91711a444a3b453c54790d5b540d7f3d0ef5798cf6a08e5acaf1b0fb445e174befd2e5b97978534aa7c22c4e404503e40f06f6832fe4a5843c9b01
toHex() 함수는 다음과 같습니다 : I는 반환 값이 문자 생각합니다.
private static String toHex(byte[] array) throws NoSuchAlgorithmException
{
BigInteger bi = new BigInteger(1, array);
String hex = bi.toString(16);
int paddingLength = (array.length * 2) - hex.length();
if(paddingLength > 0)
{
return String.format("%0" +paddingLength + "d", 0) + hex;
}else{
return hex;
}
}
public static String encrypt(String password,String key) throws NoSuchAlgorithmException, InvalidKeySpecException {
int iterations = 4096;
char[] chars = password.toCharArray();
byte[] salt = key.getBytes();
PBEKeySpec spec = new PBEKeySpec(chars, salt, iterations, 128 * 8);
SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
byte[] hash = skf.generateSecret(spec).getEncoded();
return toHex(hash);
}
이렇게 반환 된 문자열의 길이는 64 자입니까? –
(나는 여기서 선택한 이름으로도 문제를 해결할 것입니다. 이것은 암호화가 아니며 비밀 키 생성입니다. 매개 변수없는'String.getBytes' 메서드를 절대로 사용하지 말 것을 강력히 권합니다.) –
예 그것의 비밀 키 생성. 128 * 8이 무엇이고 왜 256 비트의 반환 값을 얻는 지 말해 줄 수 있습니까? – user3387358