java - 为相同的字符串生成新的 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"});
谁能帮忙告诉我我写的代码是否正确?是不是因为新的字符串数组,我每次都经过?
解决方案
问题就在这里,当你说:
在我的驱动程序代码中打印哈希,它像 B@12 一样出现.. 一些东西,每次都是新的
您正在打印使用toString()
数组显示对象哈希码的方法的数组对象。它对于每个数组对象都是唯一的,因此每次您获得一个新值。
您必须打印数组内容,例如使用java.util.Arrays
:
System.out.println(java.util.Arrays.toString(hash));
推荐阅读
- animation - 将 svgator 动画 .svg 转换为步进动画...?
- python - Django update_or_create(获取部分)使用相关对象作为kwarg
- bash - 通过 xargs 将 sed 输出传送到 grep 的问题
- java - 如何在不使用 byte[] 的情况下在 json 文件中编写多个二进制文件?
- arrays - 理解 compactMap 和 flatMap 的问题
- scala - System.loadLibrary(“libName”)上的“java.library.path 中没有 libName”
- visual-studio - Visual Studio 2019 版本。高 CPU 使用率
- node.js - Node.js + 卡夫卡 + AWS
- java - 无法识别的字段,未标记为可忽略
- ios - 设计导航项右栏按钮,在传递数据时与另一个 VC 连接