为了账号安全,请及时绑定邮箱和手机立即绑定

在java中尝试MD5哈希

在java中尝试MD5哈希

暮色呼如 2024-01-25 21:34:51
您好,我编写了一个类来为字符串输入创建哈希,但我的程序有时会为两个不同的输入提供相同的哈希。import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class Test {public byte[] Hash(String input) throws NoSuchAlgorithmException{    MessageDigest messageDigest = MessageDigest.getInstance("MD5");    byte b[] = messageDigest.digest(input.getBytes());    return b;}public static void main(String args[]) throws NoSuchAlgorithmException{   Test t = new Test();   byte[] hashValue = t.Hash("viud");   String hashString = hashValue.toString();   while(hashString.length()<32)   {       hashString = "0" + hashString;   }   System.out.println(hashString);}}当我对函数 Hash() 的输入为“viud”时,我得到的结果为 --> 0000000000000000000000[B@13e8c1c 当我的输入字符串为“Hello”时,我得到的结果为 --> 0000000000000000000000[B@ 13e8c1c但这种情况在程序执行时只发生几次。每次运行该程序时,我都会为相同的输入值生成不同的哈希值,有时还会为两个不同的输入获取相同的哈希值。究竟发生了什么?
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

  byte[] hashValue = t.Hash("viud");   
  String hashString = hashValue.toString();

byte[] 上的 toString 将为您提供 byte[] 的内存(堆)地址。这不是你想要的。你要

String hashString = new String(t.Hash("viud"));


查看完整回答
反对 回复 2024-01-25
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信