目录
概述
编程工作中老是能看到RSA、DES等字眼,大概就知道是个加密的算法,但是具体是什么,正常的使用流程、之间的区别、在客户端和服务端之间怎么配合使用、容易出安全的环节在哪里?这些问题都不知道,下面记录我的学习过程。
加密算法的分类
- 不需要秘钥
- MD5
- SHA-1
- 需要秘钥
- 对称加密
- DES
- 3DES
- AES
- 非对称加密
- RSA
- DSA
- 对称加密
名词解释:不需要秘钥
指 加密时不需要秘钥的散列算法,解密只能撞库了需要秘钥
指 加密算法的加密、解密都需要秘钥对称加密
指 加密算法的加密、解密密钥相同非对称加密
指 加密算法的加密密钥、解密密钥都不同
对称算法的分类
- 分组算法/分组密码
- DES
- IDEA
- SAFER
- Blowfish
- Skipjack
- 序列算法
- RC4
- SEAL
名词解释:分组算法/分组密码
指 对明文的一组位进行运算(即运算之前将明文分为若干组,然后分别对每一组进行运算,这些位组称为分组);序列算法
指 一次只对明文中的单个位(有时对字节)运算的算法;
各分类的区别
对称加密之间的区别
DES
- 秘钥长度56位
- 速度中,消耗资源中
- 安全性低
3DES
- 秘钥长度112、168位
- 速度慢、消耗资源高
- 安全性中
AES
- 秘钥长度128、192、256位
- 速度快、消耗资源低
- 安全性高
非对称加密之间的区别
RSA
- 安全性取决于密码长度,越长越安全
- 速度慢,消耗资源高
- 可以加密数据、数字签名
DSA
- 安全性取决于密码长度,越长越安全
- 运算快,消耗资源低
- 只能做数字签名
散列算法之间的区别
SHA-1
- 安全性高
- 速度慢
MD5
- 安全性低
- 速度快
对称与非对称的比较
对称算法
- 秘钥管理难
- 安全性中
- 速度快,适合大数量
非对称算法
- 秘钥管理容易
- 安全性高
- 速度慢,适合少量数据(数据签名)
RSA
RSA是什么
业界使用最流行的加密算法,因为它能够抵抗目前已知的所有密码攻击;
作用场景
能同时用于如下两个场景
- 加密
- 数宇签名
容易出安全问题的环节
公开的秘钥作为加密的秘钥,说明在客户端可以拿到公钥做任意加密;
服务端私钥被搞到;
DES
DES是什么
属于分组算法,以64位为分组对数据加密,它的密钥长度为56位
容易出安全问题的环节
只要掌握了任意一方(发、送方)的密钥,就能解读由DES加密算法加密的密文数据;
采用穷举法破译,破解DES加密算法实际上就是搜索密钥的编码。对于56位长度的密钥来说,如果用穷举法来进行搜索的话,其运算次数为2的56次方;
使用场景
因为秘钥管理比较难,不适合用于互联网,一般用于内部系统;
运算速度很快,适合大数据量的加解密处理;
待续...