SHA512哈希在android,php和javascript上有所不同

时间:2014-04-18 07:15:47

标签: php android hash sha512 cryptojs

我使用SHA512哈希在我的应用程序和它的后端之间传输一些加密数据。但是,我有一个奇怪的情况,不知道是什么原因导致它。

所以,我已经测试了以下设置:

Android 2x SHA512

Android 1x SHA512 - > CryptoJS 1x SHA512

PHP 2x SHA512

所以,当我进行第一次2x Android哈希时,我得到的结果与我执行1x android时的结果相同 - > 1x加密。 但是,当我使用PHP 2x时,我得到的结果与第一次Android传递相同,但PHP的第二次加密传递是不同的。

在PHP上,我尝试使用raw()和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);

为什么我的第一个哈希值是正确的而我的第二个哈希值不正确,我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:0)

SHA1不是出于安全考虑,请不要将其用于此目的。 抓住BCrypt的任何实现并做好安全保护。 至于不同的哈希:很可能是与字符串相关的编码问题。