用SHA-256句子比较一个字符串

时间:2017-05-10 08:22:28

标签: android sha256

我想比较两个字符串:

  • "password"
  • "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));
}

1 个答案:

答案 0 :(得分:5)

你的专栏:

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

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