Я использую хэш SHA512 для передачи некоторых зашифрованных данных между моим приложением и его серверной частью. Однако у меня странная ситуация, и я понятия не имею, что может быть причиной этого.
Итак, у меня протестированы следующие настройки:
Android 2xSHA512
Android 1x SHA512 -> CryptoJS 1x SHA512
PHP 2x SHA512
Итак, когда я делаю первое хэширование 2x Android, я получаю тот же результат, что и при хэшировании 1x android -> 1x cryptojs. Однако, когда я выполняю 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));
Андроид:
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;
}
КриптоJS:
var password = cryptojs.SHA512(req.params.password);
var basepassword = password.toString(cryptojs.enc.Base64);
Почему мой первый хеш будет правильным, а второй нет, и как я могу это исправить?