Хеши SHA512 различаются по андроиду, php и javascript

Я использую хэш SHA512 для передачи некоторых зашифрованных данных между моим приложением и его бэкэнд. Тем не менее, у меня странная ситуация и я понятия не имею, что может быть причиной этого.

Итак, у меня есть следующие тесты:

Android 2x SHA512

Android 1x SHA512 -> CryptoJS 1x SHA512

PHP 2x SHA512

Итак, когда я делаю первые хэширование Android 2, я получаю тот же результат, что и при создании 1x-андроида -> 1x криптоидов. Однако, когда я делаю PHP 2x, я получаю тот же результат, что и на первом проходе Android, но второй проход шифрования PHP отличается.

На PHP я пробовал функции hash () и openssl_digest () с необработанными байтами в качестве вывода.

PHP:

$firstpass = base64_encode(hash('sha512', $enteredPassword, true)); //$firstpass = base64_encode(hash('sha512', $enteredPassword, true)); //$secondpass = base64_encode(openssl_digest($firstpass, 'sha512', true)); $secondpass = base64_encode(hash('sha512', $firstpass, true)); 

Android:

 public static String encryptPassword(String password) { MessageDigest md = null; try { md = MessageDigest.getInstance("SHA-512"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } if (md != null) { md.update(password.getBytes()); byte byteData[] = md.digest(); String base64 = Base64.encodeToString(byteData, Base64.DEFAULT); return base64; } return password; } 

CryptoJS:

 var password = cryptojs.SHA512(req.params.password); var basepassword = password.toString(cryptojs.enc.Base64); 

Почему мой первый хеш будет правильным, а мой второй – и как я могу это исправить?

    SHA1 не предназначен для обеспечения безопасности, не используйте его для этого. Возьмите любую реализацию BCrypt и обеспечьте право. Что касается разных хэшей: скорее всего, проблема с кодировкой, связанная со строками.