加密
# 加密相关
明文(plaintext):加密之前的原始数据 密文(ciphertext):是通过密码(cipher)运算后得到的结果成为密文
密码(cipher):是一种用于加密或者解密的算法
密钥:是一种参数,它是在使用密码(cipher)算法过程中输入的参数
对称密钥(Symmetric-key algorithm)又称为共享密钥加密,对称密钥在加密和解密的过程中使用的密钥是相同的
非对称密钥(public-key cryptography),又称为公开密钥加密,服务端会生成一对密钥,一个私钥保存在服务端,这两个密钥分别叫做「公钥」、「私钥」
数字签名就是使用私钥对数据摘要进行签名,并附带和数据一起发送
数字证书简称 CA,它由权威机构给某网站颁发的一种认可凭证
# 对称加密
加密和解密使用的是同样的密钥
优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。
缺点:密钥容易被拦截
在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
# DES 对称加密算法
Data Encryption Standard,即数据加密标准
密钥的长度 64 位,8 个字节。
# 3DES 对称加密算法
# AES 对称加密算法
密钥的长度可以为 128、192 和 256 位,也就是 16 个字节、24 个字节和 32 个字节。
# 非对称加密
加密和解密使用的是不同的密钥:公钥和私钥(可以使用很多对密钥)。
私钥解密公钥加密数据,公钥解密私钥加密数据(私钥公钥可以互相加密解密)。私钥只能由一方保管,不能外泄。公钥可以交给任何请求方。
优点:相对安全(解密密钥不泄露)
缺点:速度较慢。
非对称加解密的过程:
服务端生成配对的公钥和私钥
私钥保存在服务端,公钥发送给客户端
客户端使用公钥加密明文传输给服务端
服务端使用私钥解密密文得到明文
解决加密解密慢的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。这样既解决了对称加密密钥在网络中传输导致安全性不高的问题,也保证了使用对称加密使加密解密速度较快。
# RSA 非对称加密算法
# ECC 非对称加密算法
# Hash 散列算法(单向加密)
# MD5
# SHA1
# 数字签名
数字签名是个加密的过程,数字签名验证是个解密的过程。
签名就是在信息的后面再加上一段内容(信息经过 hash 后的值),可以证明信息没有被修改过。hash 值一般都会加密后(也就是签名)再和信息一起发送,以保证这个 hash 值不被修改。
数字签名必须保证以下三点:
报文鉴别——接收者能够核实发送者对报文的签名;
报文的完整性——接收者不能伪造对报文的签名或更改报文内容。
不可否认——发送者事后不能抵赖对报文的签名;
数字签名解决的核心问题是:确保收到的文件没有被更改。
参考:https://www.cnblogs.com/itps/p/12359865.html (opens new window)
# 加密算法对比
# 对称算法与非对称加密算法对比
对称加密:
密钥管理:比较难,不适合互联网,一般用于内部系统
安全性:中
加密速度:快好 几个数量级 (软件加解密速度至少快 100 倍,每秒可以加解密数 M 比特 数据),适合大数据量的加解密处理
非对称算法
密钥管理:密钥容易管理
安全性:高
加密速度:比较慢,适合 小数据量 加解密或数据签名
# 对称加密算法对比
名称 | 密钥名称 | 运行速度 | 安全性 | 资源消耗 |
---|---|---|---|---|
DES | 56 位 | 较快 | 低 | 中 |
3DES | 112 位或 168 位 | 慢 | 中 | 高 |
AES | 128、192、256 位 | 快 | 高 | 低 |
# 非对称加密算法对比
名称 | 成熟度 | 安全性 | 运算速度 | 资源消耗 |
---|---|---|---|---|
RSA | 高 | 高 | 中 | 中 |
ECC | 高 | 高 | 慢 | 高 |
# Hash 散列算法对比
名称 | 安全性 | 速度 |
---|---|---|
MD5 | 中 | 快 |
SHA-1 | 高 | 慢 |
# 加密算法的选择
# 加密问题汇总
# 为什么非对称加密比对称加密慢
因为对称加密主要的运算是位运算,速度非常快,
但是非对称加密计算一般都比较复杂,比如 RSA,它里面涉及到大数乘法、大数模等等运算。