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. Любая помощь будет оценена.

0 ответов

Другие вопросы по тегам