在Java中实现MD5是很简单的,在包java.security有个类MessageDigest。官方文档如下
MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。

对于给定数量的更新数据,digest 方法只能被调用一次。digest 被调用后,MessageDigest 对象被重新设置成其初始状态。
import java.security.MessageDigest;
static char[] hex = {‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};
public static void main(String[] args) {
try{
MessageDigest md5 = MessageDigest.getInstance(“MD5”);//申明使用MD5算法
md5.update(“a”.getBytes());//
System.out.println(“md5(a)=”+byte2str(md5.digest()));
md5.update(“a”.getBytes());
md5.update(“bc”.getBytes());
System.out.println(“md5(abc)=”+byte2str(md5.digest()));
}catch(Exception e){
e.printStackTrace();
}
}

/**

  • 将字节数组转换成十六进制字符串
  • @param bytes
  • @return
    */
    private static String byte2str(byte []bytes){
    int len = bytes.length;
    StringBuffer result = new StringBuffer();
    for (int i = 0; i < len; i++) {
    byte byte0 = bytes[i];
    result.append(hex[byte0 >>> 4 & 0xf]);
    result.append(hex[byte0 & 0xf]);
    }
    return result.toString();
    }

/**

  • 将字节数组转换成十六进制字符串
  • @param bytes
  • @return
    */
    private static String byte2str(byte []bytes){
    int len = bytes.length;
    StringBuffer result = new StringBuffer();
    for (int i = 0; i < len; i++) {
    byte byte0 = bytes[i];
    result.append(hex[byte0 >>> 4 & 0xf]);
    result.append(hex[byte0 & 0xf]);
    }
    return result.toString();
    }

推荐阅读:
https://blog.csdn.net/m0_51945027/article/details/117317854

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐