【问题标题】:SHA512 hashes differ on android, php and javascriptSHA512 哈希值在 android、php 和 javascript 上有所不同
【发布时间】:2014-04-18 15:38:35
【问题描述】:

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

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

Android 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;
}

CryptoJS:

var password = cryptojs.SHA512(req.params.password);
var basepassword = password.toString(cryptojs.enc.Base64);

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

【问题讨论】:

    标签: php android hash sha512 cryptojs


    【解决方案1】:

    SHA1 不是为安全而设计的,请勿将其用于此目的。 获取 BCrypt 的任何实现并执行安全操作。 至于不同的哈希值:很可能是与字符串相关的编码问题。

    【讨论】:

    • 我只是想找出为什么我不能让这些匹配,但我也会检查 BCrypt。我发现 2x Android 和 Android->CryptoJS 在 base64 字符串中有换行符,但 PHP 版本在 base64 中没有任何换行符:S
    • 那么我对编码的影响并不大;)
    • 是的,但我仍然不知道为什么 PHP 没有换行符 :(
    • BASE64 编码有时会产生定义的行长度并输入换行符。这可以为每个库关闭。在你的情况下:Base64.encodeToString(byteData, Base64.NO_WRAP)
    • 该死,这就是解决方案!!!我在 Android 上将 Base64.DEFAULT 设置为 Base64.NO_WRAP 并解决了!非常感谢!
    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2018-06-07
    相关资源
    最近更新 更多