常见的加密方式
常见的加密算法基本分为这几类,
- 线性散列算法(签名算法)MD5 SHA1
- 对称性加密算法 AES DES
- 非对称性加密算法 RSA
Md5加密
MD5是一种被广泛使用的线性散列算法,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
MD5加密之后产生的是一个固定长度(32位或16位)的数据
MD5是可以进行反向暴力破解的。也就是用很多不同的数据进行加密后跟已有的加密数据进行对比。理论上只要数据量足够庞大M
MD5考虑的是破解的成本(时间和机器性能)。假设破解当前的MD5密码需要目前计算能力最优秀的计算机工作100年才能破解完成。那么当前的MD5密码就是安全的。
增加破解成本的方法(方法很多,这里只说我常用的)。
1.使用一段无意义且随机的私匙进行MD5加密会生成一个加密串,我们暂且称之为串1
2.将要加密的的数据跟串1拼接,再进行一次MD5,这时会生成串2
3.将串2再次进行MD5加密,这时生成的串3就是我们加密后的数据。
解密。MD5不存在解密。只能把数据进行相同的MD5处理之后跟之前的的加密串进行对比。
我们在注册账号时的密码一般都是用的MD5加密。
js中使用MD5
RSA加密
RSA加密:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。(这才是正经的加密算法)
非对称加密算法:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
- 使用时都是使用公匙加密使用私匙解密。公匙可以公开,私匙自己保留。
算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密
- 解密速度没有对称加密解密的速度快。
- 使用场景介绍
- 通过公匙加密,使用私匙解密。私匙是通过公匙计算生成的。假设ABC三方之间相互要进行加密通信。大家相互之间使用公匙进行信息加密,信息读取时使用各自对应的私匙进行信息解密
- 公私匙可以通过http://web.chacuo.net/netrsakeypair在线生成
- 用户输入的支付密码会通过RSA加密
DES/AES加密
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法
DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
AES这个标准用来替代原先的DES
DES/AES我们合并在一起介绍其用法和特点
- DES/AES是一种对称加密方式,加密运算、解密运算使用的是同样的密钥
- 使用DES/AES进行数据交互时要求双方都拥有相同的私匙
- 破解方法,暴力破解。DES 使用 56 位的密钥,则可能的密钥数量是 2 的 56 次方个。只要计算足够强大是可以被破解的
- js中的使用方法
-
base64伪加密
Base64是一种用64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密算法。只是看上去像是加密而已(吓唬人)。
- base64原理
- Base64使用A--Z,a--z,0--9,+,/ 这64个字符。
- 将3个字节转换成4个字节( (3 X 8) = 24 = (4 X 6) )先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了。
- js中的应用
D5是可以被破解的