课程名称 : 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 加盐混淆
如果我们混淆了原始数据,那么即便黑客破解了原始数据也无法使用。比如说我们对用户原始密码生成哈希值,用哈希值前六位和后三位字符,与原始密码拼接,然后再用哈希算法生成加密结果。即便黑客破解了原始数据,但是这个原始数据并不是用户的密码,黑客用这个混淆过的密码字符串是无法登陆系统的.
盐值可以固定 可以混淆。