前言
一、消息摘要(Digest)
什么是消息摘要?
对一份输入数据进行一个不可逆的 Hash计算,生成一个固定长度的 Hash 值
,这个值就是这份数据的摘要(Digest
),也称为指纹
。摘要算法(Digest)又称哈希算法(Hash)
摘要算法
- 常见的摘要算法有
MD5、SHA-1、SHA-256
等
特点:
同一个摘要算法,无论输入的数据是什么,输出都是相同长度的值
。 如: MD5,无论数据有多大,输出总是128位的散列值。- 摘要算法是
不可逆的
,只能根据原始数据计算出它的摘要值,但是不能根据摘要值反推出原始数据。 - 越优秀的摘要算法越难找到
Hash碰撞
。
虽然长内容生成短摘要
是必定会产生碰撞的
,但一个优秀的摘要算法很难主动构造出两条数据
,使得他们的摘要值相同。 - 相比加密算法(对称和非对称),
摘要算法速度都相对较快
。
使用场景:校验数据(消息)的完整性 、 数字签名
- 消息完整性:由于每一份数据生成的MD5值不一样,因此发送数据时可以将数据和其MD5值一起发送,然后就可以用MD5验证数据是否丢失、修改。
- 安全访问认证:根据摘要算法不可逆性质,(就是无法从MD5值中恢复原数据)对账号登陆的密码进行MD5运算然后保存,这样可以保证除了用户之外,即使数据库管理人员都无法得知用户的密码。
- 数字签名:这是结合非对称加密算法和CA证书的一种使用场景。
一般破解方法:字典法,就是将常用密码生成MD5值字典,然后反向查找达到破解目的,因此建议使用强密码
二.数字签名(digital signature)
原文链接:https://blog.csdn.net/qq877728715/article/details/114699628