我感到非常无聊,所以我正在制作一个实验性的蛮力。但是,我在使用 MD5 时遇到了一些问题。我得到两个非常不同的输出,
1aabac6d068eef6a7bad3fdf50a05cc8
-7d881f6ef28afe6a4bb78689e91f6e53
第一个是有效的 is dd
,第二个是无效的,即使我删除了前导连字符。
我正在查看这个答案,我调整了我必须解决的主要问题,但是我仍然得到无效的 MD5。
我的代码:
public boolean testValidity(String s) {
try {
MessageDigest md = MessageDigest.getInstance(name());
byte[] hashDigest = md.digest(s.getBytes("UTF-8"));
String hash = String.format("%032x", new BigInteger(md.digest(s.getBytes("UTF-8"))));
System.out.println(hash);
return getCompare().equalsIgnoreCase(hash);
} catch (NoSuchAlgorithmException | UnsupportedEncodingException | NullPointerException e) {
e.printStackTrace();
return false;
}
}
在上面,name()
只是获取"MD5"
并getCompare()
获取一个哈希值来比较它。
我的问题是,如何修复我的代码以确保所有 MD5 都有效?