【问题标题】:Comparate a String with SHA-256 sentences将字符串与 SHA256 句子进行比较
【发布时间】:2017-05-10 16:29:25
【问题描述】:

我想比较两个字符串:

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

【问题讨论】:

    标签: android sha256


    【解决方案1】:

    您的线路:

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

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

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 2012-08-31
      • 2021-11-20
      • 2012-10-06
      • 2019-01-22
      • 1970-01-01
      相关资源
      最近更新 更多