SHA512 хэши различаются на Android, PHP и JavaScript

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

Итак, я протестировал следующие настройки:

Android 2x SHA512

Android 1x SHA512 -> CryptoJS 1x SHA512

PHP 2x SHA512

Поэтому, когда я делаю первое 2-хкратное хэширование Android, я получаю тот же результат, что и при 1-х криптоджах Android -> 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);

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

Ответы на вопрос(1)

Ваш ответ на вопрос