MD5 简单了解下

MD5 简单了解下

捡破烂的诗人 424 2022-07-13
  • 联系方式:1761430646@qq.com
  • 菜狗摸索,有误勿喷,烦请联系

1. MD5

  • 概念:
    • MD5一种信息摘要算法(不是信息加密算法),它可以从一个字符串或一个文件中按照一定的规则生成一个特殊的数据值,并且一个文件所对应的使用MD5算法生成的数据值是固定的,当文件内容稍微发生一点变化,那么这个MD5值也会不一样(理论上有机率是可能一样的,但是概率极小)
  • 特点
    • 它是一段固定长度的数据,即 128bit 的二进制数据,无论原始数据时多长或多短,其MD5值都是 128bit
    • 通常的,这段 128bit 的数据,按照 4bit 一组分成 32 组,每一组按照 16 进制来计算其值,并以字符的形式输出每个值
    • 确定性:一个原始数据的MD5值是唯一的,同一个原始数据不可能会计算出多个不同的MD5
    • 碰撞性:原始数据与其MD5值并不是一一对应的,也就是可能有多个原始数据计算出来的MD5值是一样的,这就是碰撞
    • 不可逆:也就是说如果告诉你一个MD5值,理论上你是无法通过这个MD5值还原出它的原始数据的,这是由它的算法所决定的
      • 现在网上很多说可以在线破解的,其实就是它们将常用字符串进行排列组合,形成一个字典,所谓的破解就相当于在这个字典上的查找过程
      • 破解网站
      • 但是原始数据比较复杂,或者是原始数据经过了多次MD5加密,那么基本上不可以被破解
  • 用途:
    • 密码的加密存储:用户设置密码时,服务端只记录这个密码的MD5值,而不是记录密码本身,防止数据库明文显示密码,增加安全性。以后验证用户身份时,只需要将用户输入的密码再次做一下MD5后,与记录MD5做一个比较即可验证其密码的合法性
      • 像现在很多程序,网站的找回密码,都是通过一定的认证手段(如手机验证码)间接证明用户身份后,是通过输入新密码来进行密码找回,而不是直接返回给你原来的密码,这就是MD5的应用,因为经MD5处理后,由于不可逆,所以基本上不可能返回原始密码给你,只能通过一定的认证手段后认定你就是本账号的号主,才赋予你修改密码的权限
    • 数字签名:比如说发布一个程序,为了防止别人在你的程序里插入病毒或木马,你可以在发布这个程序的同时,公开这个程序文件的MD5码值,这样别人只需要在任何地方下载这个程序后做一次MD5,然后跟这个公开的MD5作一下比较即可知道这个程序是否被第三方修改过
    • 文件完整性验证:比如当下载一个文件时,服务器返回的信息中包括这个文件的MD5码值,在本地下载完毕时进行MD5,将两个MD5值进行比较,如果一致则说明文件完整没有丢包现象

# MD5 # 加密