java - DigestUtils.md5Hex 返回相同的值

标签 java hash md5

谁能说出为什么这段 Java 代码返回这么多相同的 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 - DigestUtils.md5Hex 返回相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32166872/

相关文章:

java - 如何使用java.util.Scanner从System.in正确读取用户输入并对其进行操作?

ruby - 如何在 Ruby 中为每个 id 创建哈希

security - MD5 是否不如 SHA 等安全?阿尔。在实际意义上?

Python Hash MD5 不等于 SQL Server

c# - 带盐的 MD5 散列用于在 C# 中将密码保存在数据库中

java - Wildfly 负载均衡器日志

java - 如何知道java框架的坐标?

java - 将 ''下的属性绑定(bind)到com.zaxxer.hikari.HikariDataSource失败

ruby - 在哈希中访问哈希时如何处理潜在错误?

c - 什么是 word_at_a_time.h 中的 has_zero 和 find_zero 用于