我使用SHA512哈希在我的应用程序和它的后端之间传输一些加密数据.但是,我有一个奇怪的情况,不知道是什么原因导致它.
所以,我有以下设置测试:
Android 2x SHA512
Android 1x SHA512 – > CryptoJS 1x SHA512
PHP 2x SHA512
所以,当我进行第一次2x Android哈希时,我得到的结果与我做1x 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));
安卓:
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);
为什么我的第一个哈希是正确的而我的第二个哈希是不正确的,我怎么能解决这个
解决方法:
SHA1不是为了安全而制作的,请不要将其用于此目的.
抓住BCrypt的任何实现并做好安全保护.
至于不同的哈希:很可能是与字符串相关的编码问题.