簡體   English   中英

SHA512哈希在Android,PHP和JavaScript上有所不同

[英]SHA512 hashes differ on android, php and javascript

我正在使用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));

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);

為什么我的第一個哈希正確,而第二個哈希不正確,我該如何解決呢?

SHA1不是為了安全而設計的,請勿為此使用它。 抓住BCrypt的任何實現並做安全權限。 至於不同的哈希值:很可能是與字符串有關的編碼問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM