我正在使用 SHA512 哈希在我的应用程序和它的后端之间传输一些加密数据。但是,我遇到了一个奇怪的情况,不知道是什么原因造成的。
所以,我已经测试了以下设置:
安卓 2x SHA512
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;
}
加密货币:
var password = cryptojs.SHA512(req.params.password);
var basepassword = password.toString(cryptojs.enc.Base64);
为什么我的第一个哈希是正确的而我的第二个不是,我该如何解决这个问题?