【问题标题】:New MD5 generating for the same string为相同的字符串生成新的 MD5
【发布时间】:2021-09-28 07:57:55
【问题描述】:

我已经编写了一个代码来生成一个 MD5,但不幸的是它每次都会为同一个字符串生成一个新的 MD5。谁能帮忙。

代码如下:

public static byte[] getHash(String[] constants)
{
MessageDigest md= MessageDigest.getInstance("MD5");
StringBuilder toBeHashed=new StringBuidler();
for(String c: constants)
{
toBeHashed.append(c);
}
return md.digest(toBeHashed.toString().getBytes());
}

驱动代码:

byte[] hash=MyClass.getHash(new String[] {"01L488213P9579","2021-31-31"});

谁能帮忙告诉我我写的代码是否正确?是不是因为新的String数组,我每次都经过?

【问题讨论】:

  • 您确定每次都传递相同的字符串吗?请提供显示问题的代码,以便我们重现它。即提供一个调用getHash的函数,对同一个String给出不同的输出。
  • 是的,我使用的是同一个字符串,我的字符串是“01L488213P95792021-31-31”
  • 再次,请附上显示问题的代码,完整的输入和完整的输出。
  • 您好已添加代码,请立即查看..
  • 那么如何为字符串数组创建 md5 哈希?我只是在我的驱动程序代码中打印哈希,它就像 B@12.. 一样,每次都是新的

标签: java string hash java-8 md5


【解决方案1】:

问题就在这里,当你说:

在我的驱动程序代码中打印哈希,它就像 B@12.. 一样,每次都有新的东西

您正在打印使用toString() 方法的数组对象,该方法对于数组显示对象哈希码。它对每个数组对象都是唯一的,所以每次你得到一个新值。

您必须打印数组内容,例如使用java.util.Arrays:

System.out.println(java.util.Arrays.toString(hash));

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 2017-11-08
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多