android - 将字符串与 SHA-256 语句进行比较

标签 android sha256

我想比较两个字符串:

  • “密码”
  • "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8"(相同,但采用 SHA-256)。

通常情况下,isPassValid() 函数会返回 true,但我得到的是 false 响应。为什么?

这是我的代码:

public static boolean isPassValid(){
    String hash = bin2hex(getHash("password"));
    return hash.equals("5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8");
}

private static byte[] getHash(String password) {
    MessageDigest digest=null;
    try {
        digest = MessageDigest.getInstance("SHA-256");
    } catch (NoSuchAlgorithmException e1) {
        e1.printStackTrace();
    }
    assert digest != null;
    digest.reset();
    return digest.digest(password.getBytes());
}

private static String bin2hex(byte[] data) {
    return String.format("%0" + (data.length*2) + "X", new BigInteger(1, data));
}

最佳答案

你的线路:

return String.format("%0" + (data.length*2) + "X", new BigInteger(1, data));

返回一个大写十六进制字符串,其中您要比较的字符串具有小写十六进制字符。将“X”更改为“x”或使用 equalsIgnoreCase() 进行比较。

关于android - 将字符串与 SHA-256 语句进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43887118/

相关文章:

python - 如何在 python 中使用 RSA SHA-256 签署 token ?

java - 为不同屏幕设计 xml 布局 : Android

javascript - 如何使用 URI 使用 phonegap 压缩图像

android - 使用自定义 ArrayAdapter 在 ListView 中删除带有按钮的项目

Android - 通过 ArrayAdapter 从 ListView 中删除行时 ListItem id 发生变化

java - 没有盐的 sha-256 并不总是返回相同的哈希值

c - 使用 Emscripten 编译的 WebAssembly 中的 HmacSHA256

Android的盒子模型

ios - 在 iOS 上使用 SHA256 哈希

javascript - SHA256 使用 Filereader 问题以 Angular 6 散列大文件