SHA512 Hashes unterscheiden sich auf Android, PHP und Javascript

Ich verwende den SHA512-Hash, um einige verschlüsselte Daten zwischen meiner App und dem Backend zu übertragen. Ich habe jedoch eine merkwürdige Situation und keine Ahnung, was sie verursachen könnte.

Also habe ich folgende Setups getestet:

Android 2x SHA512

Android 1x SHA512 -> CryptoJS 1x SHA512

PHP 2x SHA512

Wenn ich also das erste 2x Android-Hashing durchführe, erhalte ich das gleiche Ergebnis wie beim 1x Android -> 1x Cryptojs. Wenn ich PHP 2x mache, erhalte ich jedoch das gleiche Ergebnis wie beim ersten Android-Durchgang, aber der zweite Verschlüsselungsdurchgang des PHP ist anders.

Unter PHP habe ich sowohl die Funktionen hash () als auch openssl_digest () mit rohen Bytes als Ausgabe ausprobiert.

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);

Warum sollte mein erster Hash korrekt sein und mein zweiter nicht und wie könnte ich das beheben?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage