MessageDigest

MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。
MD5算法的使用不需要支付任何版权费用。

百度上搜MD5会出现一大堆加密解密,但实际上MD5不是一种加密算法,只是一种算法,因为它是一个不可逆的过程,即 MD5 生成消息摘要后是不能通过结果解析得到原来的内容。

MD5用途
MD5生成的消息摘要通常的用途是用来校验文件的完整性。
文件完整性校验

通过接收到的文件进行MD5摘要校验对比,就能得出文件在传输过程中有没有被篡改。
在 MySQL 官网上的下载网页也提供了各版本文件的 MD5 供用户下载后校验。

防止直接获取明文
由于MD5在生成后无法进行反向解析,加密后会像上面图中一样,只有一串16进制的字符数组,无法获取原本的内容是什么(其实上图中的MD5字符,是使用Java自带的MD5工具对“123456”进行处理后得到的);所以通常也可以用于传输一些私密信息,像用户密码。

以 Web 应用为例,前台页面输入密码后,可以通过MD5加密,然后直接将 MD5字符串 保存到数据库中,当用户登录时只需将数据库中的 MD5字符串获取并与之输入的密码MD5字符串比对即可通过验证。
图片是实际项目中的,有点乱,不过逻辑很简单

MD5实际使用
此处以 Java 语言示例

    //创建 MD5 消息摘要实例
    MessageDigest md5 = MessageDigest.getInstance("MD5");

    String password = "123456";

    // 将需要生成消息摘要的内容加入到 MD5 中
    md5.update(password.getBytes("utf-8"));

    // 就得到了 MD5 处理后的消息摘要的字节数组
    byte[] b = md5.digest();

    // 将字节数组转换成 16进制 的字符数组(方法不写出来了,自行百度“字节数组转16进制字符数组”)
    String md5Pwd = byteToHexString(b);

    // 或者 直接使用编码工具进行编码
    BASE64Encoder encoder = new BASE64Encoder();

    // MD5 字符串
    String md5Pwd = encoder.encode(b);

    // md5Pwd = 4QrcOUm6Wau+VuBX8g+IPg== 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值