首页 > 解决方案 > 为相同的字符串生成新的 MD5

问题描述

我已经编写了一个代码来生成一个 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"});

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

标签: javastringhashjava-8md5

解决方案


问题就在这里,当你说:

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

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

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

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

推荐阅读