MD5加密算法

一、MD5简介

MD5,全称为“Message Digest Algorithm 5”,中文名“消息摘要算法第五版”,它是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。严格来说,它是一种摘要算法,是确保信息完整性的。不过,在某种意义上来说,也可以算作一种加密算法。

二、MD5特点

1、压缩性:

任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:

从原数据计算出MD5值很容易。

3、抗修改性:

对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、弱抗碰撞:

已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

三、功能实现

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Utils {
    /**
     * @Description: MD5加密
     * @Auther: 忘忧
     * @Date: 11:11 2021/8/18 
     * @Param: 要加密的字符串
     * @Return: 加密后的字符串
     */
     public static  String code(String str){
         if(str == null || str.length() == 0){
             throw new RuntimeException("数据不能为NULL");
         }
             try {
                 //初始化MessageDigest
                 MessageDigest md =MessageDigest.getInstance("MD5");
                 //更新
                 md.update(str.getBytes());
                 // 获取数据的信息摘要
                 byte[]byteDigest = md.digest();
                 int i;
                 StringBuffer buf = new StringBuffer();
                 for (int offset = 0; offset < byteDigest.length; offset++) {
                     i = byteDigest[offset];
                     if (i < 0)
                         i += 256;
                     if (i < 16)
                         buf.append("0");
                     buf.append(Integer.toHexString(i));
                 }
                 //32位加密
                 return buf.toString();
                 // 16位的加密
                 //return buf.toString().substring(8, 24);
             } catch (NoSuchAlgorithmException e) {
                 e.printStackTrace();
                 return null;
             }
     }
     }

1、测试

public class test {
    public static void main(String[] args) {
        String md5 =MD5Utils.code("321123");
        System.out.println(md5);
    }
}

2、运行结果

150920ccedc34d24031cdd3711e43310
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值