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);
Почему мой первый хэш будет правильным, а второй - нет, и как я могу это исправить?