前言
该手机号加密方法主要为 webpack打包
一共有四种方法
根据返回参数解析
返回值为加密字段
在网页中经过处理后呈现正常值
解析
加密主函数 根据response中的返回值判断使用那个解密函数
将代码折叠可以看到 解密函数都在t.a上方
可以直接复制下来
四个方法中 CSO都很简单
function(e, t, n) {
if ((t -= (e += "").length) <= 0)
return e;
n || 0 === n || (n = " ");
if (" " === (n += "") && t < 10)
return r[t] + e;
var o = "";
for (; 1 & t && (o += n),
t >>= 1; )
n += n;
return o + e
}
;
var r = ["", " ", " ", " ", " ", " ", " ", " ", " ", " "]
只需要补一下s函数 r.a 函数即可
这两个地方补一下即可
函数E
E函数比较麻烦
流程主要就是
将secret切割生成两个字符串 转化成两个四位数组
然后处理t
进入decrypt 一路点
t = this._parse(t, r.format) 会返回一个对象 里面包含加密字符串生成的一个带负值的四位数组
进入到这里后 在 createDecryptor 中一路点点点 进入到doReset
_invKeySchedule 这里最重要的是这个值 是根据 之前生成的第一个数组生成的 后面解密时会用到
之后开始 finalize 一路点点点
进入到这里 会将带负值的数组使用前面的_invKeySchedule 转换为正值的数组
经过这两个函数后 生成一个新的数组
然后调用一个 t 函数
此时 第二个数组就是_iv
经过t函数。生成一个新的数组
最后将这个数组只用最开始的l.a函数中的stringify 转换为手机号码
了解了一下 原来这个就是AES加密
误打误撞也算详细了解了一下加密流程
抖音web端滑块也是基于AES 我是看到两个加密的流程如此像才知道的