我使用JDBC连接灯和我有字LondonWeight作为密码MySQL数据库使用MD5加密.然后,我需要检查输入的密码,即LondonWeight检查它们是否匹配.但是,我的Java代码中的散列为该单词返回不同的输出.
MySQL哈希:1274d1c52d7a5a9125bd64f1f9a26dce
Java哈希:132310771724320562704545645352563257040366
这是我的哈希码:
private String hashPass(String pass) throws NoSuchAlgorithmException {
MessageDigest mdEnc = MessageDigest.getInstance("MD5");
mdEnc.update(pass.getBytes(), 0, pass.length());
String md5 = new BigInteger(1, mdEnc.digest()).toString(8); // Encrypted
return md5;
}
Run Code Online (Sandbox Code Playgroud)
它肯定会散列在文本框中输入的字符串,因为我将它打印到终端,所以我可以检查.知道为什么它会提供不同的输出吗?我理解有不同的方法来散列字节或其他东西?
您目前正在使用Java将哈希转换为八进制,而MySQL版本则为十六进制.
这是第一个问题,但也是:
BigInteger将字节数组转换为十六进制; 这不是它的用途.使用Apache Commons Codec或专为十六进制转换而设计的内容.例如,通过这种方式,您将获得BigInteger可能会抑制的适当前导零String.getBytes| 归档时间: |
|
| 查看次数: |
434 次 |
| 最近记录: |