PBKDF2 в Android отличается от вывода Ios и node.js
Я реализовал PBKDF2 с Hmac-SHA1 в Android с помощью следующего кода.
private static final int ITERATIONS = 10000;
private static final int KEY_LENGTH = 256; // bits
public static String hashPassword(String password, String salt)
throws NoSuchAlgorithmException, InvalidKeySpecException {
char[] passwordChars = password.toCharArray();
byte[] saltBytes = salt.getBytes();
PBEKeySpec spec = new PBEKeySpec(passwordChars, saltBytes, ITERATIONS,
KEY_LENGTH);
SecretKeyFactory key = SecretKeyFactory
.getInstance("PBKDF2WithHmacSHA1");
byte[] hashedPassword = key.generateSecret(spec).getEncoded();
return String.format("%x", new BigInteger(hashedPassword));
}
public static void main(String[] args) throws Exception {
System.out.println(hashPassword("abcd1234",
"6c646576656c6f7065726c3139383540676d61696c2e636f6d"));
}
это дает мне следующий ключ в качестве вывода
138e52b955673f2b580b6a02283e3f5c52dce03e2dcdb140e4ad24e4347c2568
и выходной файл node.js
8462884f256a94cce232b9227bc73072763be8824af94807101ff0a322e20388
вывод node.js - это то, что мне нужно в android, которое я успешно получил в ios.
это мой тестовый сайт для получения вывода node.js
https://jswebcrypto.azurewebsites.net/demo.html
Размер ключа: 256
Итерации: 10000
Ключевая фраза: abcd1234
соль: 6c646576656c6f7065726c3139383540676d61696c2e636f6d
Я понятия не имею, что происходит в Android. Любая помощь будет оценена.