DES算法的入口参数又三个:
全称:数据加密标准(Data Encryption Standard),属于对称加密算法。DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。它的密钥长度是56位(因为每个第8 位都用作奇偶校验),密钥可以是任意的56位的数,而且可以任意时候改变。
key、DataMode,padding这些分别是啥??
- key为7个字节共56位,时DES算法的工作密钥
- Data为8字节64位,时要被加密或者解密的数据
- Mode为DES的工作方式
- padding为填充模式,如果加密后密文长度打不到整数倍(8字节、16字节),进行填充
- padding固定赋值为:CryptoJS.pad.Pkcs7即可
特点:
私钥和密钥相同、都有加密函数(encrypt)和解密函数(decrypt)
知道DES加密函数就能更快捷的找到加密入口
案例
-
目标网站
对其登录密码进行破解
翼龙贷:https://cj.eloancn.com/user/login?service=https%3A%2F%2Fcj.eloancn.com%2Fpcgway%2Fapp001%2Fv1%2F02%3Fret%3DaHR0cHM6Ly9jai5lbG9hbmNuLmNvbQ%3D%3D&v=1621670639475 -
根据上一篇博客所讲的通过关键字找到加密js.
这样确实可以找到加密js文件,但是这里是通过上述所说的通过DES加密特点找多加密参数。多一种方式多一种解法有利于更快定位加密入口。
-
现在通过所说有DES加密有加密函数和解密函数的特点找加密入口
通过关键字:encrypt
-
进入js文件打断点观摩一下。
这里说一下断点为什么这么打,打在加密函数前面是为了知道这个函数是否是加密函数,看看传入的明文,我传入的是123456,这边t的值就是123456,说明断点对了。打在最后就是为了看他的输出是否对得上密文。
上述机密函数e就是它的DES加密的key值。那么这个加密函数就算已经破解了。 -
EDS加密需要什么??
一个key也是密钥、一个工作方式就是ECB模式、一个填充方式pkcs7、一个明文。我们需要的就是这些了。
那就把整个加密函数扣下
这里需要导入加密模块。
var CryptoJS = require('crypto-js')
function encryptByDES(t, e) {
var a = CryptoJS.enc.Utf8.parse(e);
try {
var s = CryptoJS.DES.encrypt(String(t), a, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
} catch (t) {
console.log(t)
}
return s.toString()
}
这里再补充一下,问什么使用123456作为明文。123456这数字听特殊的,不只是它见到,因为它的MD5加密的123456的值是特定的。比如上一篇文章记住md5加密的值就可以断定它是md5加密并且没有进行修改过的。那么就不用这么辛苦扣代码了,直接导入一个md5加密模块就可以。