Bootstrap

数据加密算法

一、加密算法

1. 分类

2. 不可逆加密

哈希算法,散列算法,信息摘要,消息摘要,消息摘要算法,摘要,指纹,Digest

以上这些名词基本都属于一个意思,中心思想就是把一份数据(文件、密码等,长度任意)作为输入,通过某种算法(也叫哈希函数或散列函数),最后生成一个固定长度的Hash值,这个值称为该份数据的摘要或指纹。它的主要特征是不需要密钥,并且无法解密即不可逆,常见的算法有MD5,SHA系列。比如

MD5加密后会产生128位摘要,即16字节,32位十六进制字符

SHA1加密后会产生160位摘要,即20字节,40位十六进制字符

主要用途:

  • 一致性验证

为防止文件在网络传输中被人恶意篡改,发布者会附加摘要信息(指纹)。用户把文件下载以后可以通过校验软件也生成摘要,跟发布者提供的摘要对比就能确定文件是否一致。

  • 密码验证

(注册时)把正确的密码生成摘要保存在系统或数据库中,登录时把用户输入的密码同样生成摘要,对比两份摘要是否相同以验证身份。这可以避免密码泄露。

3. 对称加密

加密和解密使用相同的秘钥

4. 非对称加密

 加密和解密使用不同的秘钥,分发给他人用来加密的称为公钥,自己用来解密的称为私钥

反过来亦可,即用私钥加密,用公钥解密 

5. 数字签名

数字签名类似于现实中的手写签名,用于验证发送者身份的真实性和所发送消息的有效性,防止中间人攻击。

数字签名基于非对称加密算法。

数字签名过程

 接收方如何获取发送方的公钥?

(1) 通过消息传送,正式发送消息之前先发送公钥(以及哈希算法)或者把公钥附加在每个数据包的签名后面,根据具体设计方案确定

(2) 手动部署到接收方

;