手记

【备战春招】第3天 MD5算法

 课程名称 : SpringBoot2.X + Vue + UniAPP,全栈开发医疗小程序

课程章节 :2-2 springboot 技术栈分析

 课程讲师 : 神思者



MD5(Message Digest Algorithm 5)中文名为消息摘要算法第五版,是计算机安全领域广泛使用的一种散列函数,用以提供消息完整性保护

MD5作为一种常用的摘要算法(或指纹算法),其具有以下几个重要的特点(个人观点):

  • 输入任意长度信息,输出长度固定:
    MD5 可输入任意长度的信息,其输出均为128位(bit)固定长度的二进制数据

  • 运算速度快:
    MD5的运算均为32位 与、或、非、位移等位运算,因此其运算速率快,几乎不消耗CPU时间。

  • 不可逆:
    根据MD5的的散列结果无法计算原始数据(查字典除外)。

  • 碰撞性:
    原始数据与其MD5散列结果非一一对应,存在多个原始数据MD5结果相同的可能性

  • 不安全:
    2011年,RFC 6151 禁止MD5用作密钥散列消息认证码。


哈希字典反破解


算法层面破解不了哈希算法,于是就有人另辟蹊径了。他把各种字符串文字都用哈希算法生成加密结果,俗称哈希字典。然后把要破解的哈希值,代入哈希字典,看看能跟哪个记录对得上,于是就得出原始数据是什么了。现在网上就有哈希字典可以下载,所以用哈希加密的结果很容被破解

预防哈希字典破解



为了防御哈希字典破解,我们可以对数据做多次哈希加密。比如说第一次用MD5加密,然后再用SHA加密。虽然这么做也能起到一定的防破解作用。

因为哈希值通常是16、32、64个字符组成,所以用哈希字典破解了SHA算法原始数据之后,黑客马上就能识别出来原始数据是用哈希加密过的,于是套用到哈希字典再解密一次。

终极大招

MD5 加盐混淆

如果我们混淆了原始数据,那么即便黑客破解了原始数据也无法使用。比如说我们对用户原始密码生成哈希值,用哈希值前六位和后三位字符,与原始密码拼接,然后再用哈希算法生成加密结果。即便黑客破解了原始数据,但是这个原始数据并不是用户的密码,黑客用这个混淆过的密码字符串是无法登陆系统的.



盐值可以固定 可以混淆。


0人推荐
随时随地看视频
慕课网APP