Os hashes SHA512 diferem no android, php e javascript
Estou usando o hash SHA512 para transferir alguns dados criptografados entre meu aplicativo e o back-end. No entanto, estou tendo uma situação estranha e não tenho ideia do que possa estar causando isso.
Então, eu tenho as seguintes configurações testadas:
Android 2x SHA512
Android 1x SHA512 -> CryptoJS 1x SHA512
PHP 2x SHA512
Então, quando eu faço o primeiro hash 2x do Android, obtenho o mesmo resultado que quando eu faço o 1x android -> 1x cryptojs. No entanto, quando eu faço o PHP 2x, obtenho o mesmo resultado que recebo na primeira passagem do Android, mas a segunda passagem de criptografia do PHP é diferente.
No PHP, tentei as funções hash () e openssl_digest () com bytes brutos como saída.
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);
Por que meu primeiro hash estava correto e o segundo não e como eu poderia corrigir isso?