DigestUtils.md5Hex returns 相同的值
DigestUtils.md5Hex returns the same value
谁能说出为什么这个 Java 代码 returns 有这么多相同的 MD5 值:
public static void main(String[] args) throws Exception{
Random rnd = new Random();
for (int i = 0; i < 1000; i++) {
String key = DigestUtils.md5Hex(rnd.nextFloat() + System.currentTimeMillis() + "");
System.out.println(key + ", " + rnd.nextFloat() + System.currentTimeMillis() + "");
}
}
这是我得到的输出:
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.15059251440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.599991561440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.54911111440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.0982222561440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.169987141440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.032851281440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.223390041440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.70173611440334190624
....
....
....
对不起,我的错:)
显然:
rnd.nextFloat() + System.currentTimeMillis()
简单地将 2 个数字相加,得到一个非常小的数字,表示为 Java 中的相同字符串。
谁能说出为什么这个 Java 代码 returns 有这么多相同的 MD5 值:
public static void main(String[] args) throws Exception{
Random rnd = new Random();
for (int i = 0; i < 1000; i++) {
String key = DigestUtils.md5Hex(rnd.nextFloat() + System.currentTimeMillis() + "");
System.out.println(key + ", " + rnd.nextFloat() + System.currentTimeMillis() + "");
}
}
这是我得到的输出:
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.15059251440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.599991561440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.54911111440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.0982222561440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.169987141440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.032851281440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.223390041440334190624
814788aa9b6a22bf73ff3ae5fe0c6e0c, 0.70173611440334190624
....
....
....
对不起,我的错:)
显然:
rnd.nextFloat() + System.currentTimeMillis()
简单地将 2 个数字相加,得到一个非常小的数字,表示为 Java 中的相同字符串。