背景
与第三方对接的项目会有数据安全性和数据完整性的要求,所以需要加解密、摘要、签名等概念
加密
加密分对称加密和非对称加密,加密主要作用是防止信息泄露
对称加密:只有一份秘钥,数据用秘钥加密也用秘钥解密,常用算法AES,DES
非对称加密:有一对秘钥,公开的叫公钥,不公开的叫私钥,数据用公钥加密后只能用私钥解密,常用的算法RSA
签名
摘要
信息经过摘要算法处理之后得到一段hash值,就是摘要。
摘要值相等,数据相等(重复的概率忽略)。
摘要值不可逆。
摘要明文经过加密得到的摘要密文就是签名。
数字签名的流程
前提准备
- 甲生成公钥1和私钥1,并线下公钥1线下给乙
- 乙生成公钥2和私钥2,并线下把公钥2给甲
甲发送信息给乙
- 甲的产生数据D
- 甲用指定摘要算法对D进行摘要得到D1,用私钥1加密得到签名sign
- 甲用公钥2加密D得要msg
- 甲发送sign和msg给乙
乙验证甲的信息
- 乙用私钥2解密msg得到D2
- 乙用指定摘要算法摘要D2得要D3
- 乙用公钥1解密sign得到D4
- 对比D3与D4是否一致,如果不一致则数据被篡改
ps:
- 公钥1为公开,sign解密后得到是摘要的hash值,不可逆,数据不会泄露
- msg只能用私钥2解密,私钥不泄露则数据不会泄露