数据加密和签名
1. 散列(哈希)函数
HASH函数有: 有MD5、SHA1、SHA256、SHA512
特点:
- 任意一个二进制数,进行hash之后都会生成固定的长度
- 计算出的hash值是不可逆的
- 不同的值一般计算的都是不同观点hash值,不过也会存在相同的情况,但可能性很小
2.对称加密算法
对称加密算法有哪些: 有DES、3DES、AES
特点: 加密和解密使用同一个秘钥
优点: 加密解密的速度快,性能好
场景: 适合给大数据进行加密
缺点: 密钥在两个地方存储,所以安全性十分重要
3.非对称加密算法
使用最多的是: RSA
特点: 一对密钥,公钥用来解密,私钥用来解密
优点: 安全性好
缺点: 提高了安全性自然就会降低了性能
作用: 提供数据在传输过程中的安全性,只有接受者可以进行查看,其他人都不能进行解密查看
4.签名
特点: 一对密钥,私钥用来签名,公钥用来验签
作用: 接受者只接受指定的发送人,其他发送人发来的信息都概不接受
5.生活场景理解
为了充分理解上述的加密特征,下面用生活中的场景进行解释。
场景: 中国的小明写信给美国的小王。
要求: 保证信的安全,只能够小王一个人看,在运输过程中不允许也不能够让其他人看到里面的内容,无论是何种途径。
此时的小明就开始启动自己的最强大脑:
第一个方法: 对信的内容进行加密,但是加密之后,虽然保证了传输动安全性,即使被中间人看了,也是加密后的信息,但缺点是老王收到之后也只能看到加密后的信息,无法恢复成正常的内容——HASH算法
。
第二个方法: 不仅对内容进行加密,还将加密的密钥告诉老王,虽然这种方式是可行的,但也是有一定的问题。比如密钥如何给到小王,如果通过传输的方式,也会存在被截获的风险;如果是提前当面告知小王,然后在远程发送加密后的数据,但这个密钥现在有两份,一样存在被泄露的风险——对称加密
。
第三个方法: 让老王把他的公钥发来,公钥可以让任何人知道,然后小明用小王给的公钥进行加密,然后在进行发送信,收到信的小王用自己的私钥进行解密,私钥只有小王自己有,这就降低了泄露的风险,是相对非常安全的——非对称加密
。
第四个方法: 虽然利用非对称加密方式解决了传输的安全性问题,但是小王的公钥任何人都有可能知道,所有任何人都可以将加密后的数据发送给小王,但小王在这个时间段中只想收到小明的消息,其他一律拒绝——签名
。
6.图解
场景:
分析:
用户A发送数据: 对data数据进行hash算法(不直接对原数据签名的原因是hash算法之后能够生成固定数据对长度,能够提高性能)生成hash_A,然后用PRI_A对生成的hash_A进行签名,最终的数据结构是data和sign,然后用PUB_B公钥对数据进行加密。
用户B接受数据: 对加密后数据利用PRI_B进行解密,然后判断当前数据是否是用户A发送过来的,然后需要验签,又分为两步,第一步是跟用户A使用同样的HASH算法对data数据进行hash生成hash_data(由于算法不可逆),第二步是对签名进行解签,解签后的值就是用户A利用HASH算法生成的值hash_A,然后两者hash_data和hash_A进行比较,如果相同,则能确定是用户A发送过来的进行接受,如果不相等,则拒绝签收。