加密类型
不可逆加密
不可逆加密算法的特征输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统验证。
常见的不可逆算法:MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我们可以统称为SHA2加密算法,SHA加密算法的安全性要比MD5更高,而SHA2加密算法比SHA1的要高。其中SHA后面的数字表示的是加密后的字符串长度,SHA1默认会产生一个160位的信息摘要。不可逆加密算法的特征是加密过程中不需要使用密钥,但是HMAC是需要密钥的
由于这些加密都是不可逆的,因此比较常用的场景就是用户密码加密,其验证过程就是通过比较两个加密后的字符串是否一样来确认身份的。网上也有很多自称是可以破解MD5密码的网站,其原理也是一样,就是有一个巨大的资源库,存放了许多字符串及对应的MD5加密后的字符串,通过你输入的MD5加密串来进行比较,如果过你的密码复杂度比较低,还是有很大机率验证出来的。
对称加密
对称加密算法是应用比较早的算法。加密方法使用单个加密密钥来加密和解密数据。对这两个操作使用单个键使其成为一个简单的过程,因此称为“对称”。这也造成了密钥管理困难的问题。常见的对称加密算法有DES、3DES、AES128、AES192、AES256,SM4(国密) (默认安装的 JDK 尚不支持 AES256,需要安装对应的 jce 补丁进行升级 jce1.7,jce1.8)。对称加密算法的安全性相对较低,比较适用的场景就是内网环境中的加解密。
非对称加密
与对称加密方法相反,非对称加密涉及多个密钥,用于数据的加密和解密。非对称加密包含在数学上彼此相关的两个不同的加密密钥。这些密钥之一称为“公共密钥”,另一个称为“私有密钥”。因此,为什么非对称加密方法也被称为“公钥密码术”。这两个密钥完全不同但又完全匹配。只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。常见的非对称加密有RSA、SM2等。
常用加密介绍
MD5
加密类型: 不可逆加密
使用地方:
- 参数验签
- 密码验证
**常见特征: **
- 结果特征: 结果为16进制字符串,长度为32
- 实际中,当看到这个以上特征时就可以断定为Md5的概率为70%,如果存在请求参数中或者请求头中并且key 为sigin,百分之90%为MD5加密。
- 验证方式是调试JS 代码在加密出打下断点,使用js 调试加密代码输入123456,验证测试结果与在线MD5 的结果是否一致
- 如果是在密码的地方,那么在登录密码框输入123456进行验证,最好能记住123456的MD5 值:e10adc3949ba59abbe56e057f20f883e
- JS 特征:MD5,crypto-js, js-md5
this._hash = new WordArray.init([
0x67452301, 0xefcdab89,
0x98badcfe, 0x10325476
]);
SHA1/SHA256
加密类型: 不可逆加密
使用地方:
- 参数验签
- 密码验证
**常见特征: **
- 结果特征: 结果为16进制字符串,长度为40(sha1)、60(sha256)
- 该特征可以断定为SHA加密的概率为70%
- JS 特征:
SHA1,SHA256,crypto-js
_doReset: function () {
this._hash = new WordArray.init([
0x67452301, 0xefcdab89,
0x98badcfe, 0x10325476,
0xc3d2e1f0
]);
}
H[0] = (H[0] + a) | 0;
H[1] = (H[1] + b) | 0;
H[2] = (H[2] + c) | 0;
H[3] = (H[3] + d) | 0;
H[4] = (H[4] + e) | 0;
H[5] = (H[5] + f) | 0;
H[6] = (H[6] + g) | 0;
H[7] = (H[7] + h) | 0;
DES/3DES
DES是对称加密算法领域中的典型算法,其密钥密钥长64位 8 字节字符串或者接受一个 24 字节字符串作为 3DES 2) 算法的密钥。(密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位)56 位 8位奇偶校验位。
加密类型: 可逆对称加密
加密模式:ECB 模式</font>CBC 模式,默认是 ECB 模式
使用地方:
- 参数密码数据加密
**常见特征: **
JS 特征
参数:
* key: 8字节字符串/24字节字符串
* message: 加密或解密的信息字符串
* encrypt: 布尔值参数用来说明信息是加密还是解密
* mode: 1:CBC模式,0:ECB模式(默认)
* iv: 可选项,初始化向量
* padding: 可选项, 8字节的输入向量字符串(在 ECB 模式下不使用)
var pc2bytes0 = new Array (0,0x4,
标签:加密,JS,SHA,密钥,字符串,识别,加密算法,MD5
From: https://blog.csdn.net/u010385925/article/details/143663264