web爬虫笔记:js逆向案例七 RSA非对称加密(webpack打包)
一、目标网址:aHR0cHM6Ly9lYy5taW5tZXRhbHMuY29tLmNuLw==
二、RSA加密介绍
RSA加密是一种非对称加密算法,它使用两个不同的密钥来加密和解密数据。这种加密方法提供了很好的安全性,因为它无法被加密者所破解。RSA加密的特点包括:
- 公钥和私钥成对出现:RSA加密使用一对公钥和私钥。公钥用于加密数据,私钥用于解密数据。
- 公钥和私钥长度成倍关系:公钥的长度是私钥长度的整数倍。通常,公钥长度至少是私钥长度的两倍。
- 公钥和私钥生成方法:RSA公钥和私钥可以使用不同的生成方法,例如,使用整数和规则生成。
- 加密和解密使用不同的密钥:RSA加密使用公钥加密数据,然后私钥解密数据。确保解密用的私钥是正确的,否则会导致解密错误。
- 加密解密速度:RSA加密和解密速度较慢。
- 安全性:由于RSA使用公钥和私钥对数据进行加密和解密,无法被加密者破解,因此RSA加密具有很好的安全性。
- 可读性:公钥和私钥是由数学公式生成的,不容易被一般人理解,通常需要专业工具进行操作。
- 在js逆向中可以通过关键setPublicKey()方法快速确定是否是rsa加密。
- 还可以通过{ key_size: 1024, public_exponent: “010001”}等来快速确定是否是rsa加密。
三、接口分析
四、加密过程分析(公钥是通过open/homepage/public接口获取)
// 设置公钥
t.setPublicKey(r),
// 生成需要加密的明文数据
a = m(m({}, e), {}, {
sign: f()(JSON.stringify(e)),
timeStamp: +new Date
}),
// 进行加密操作
s = t.encryptLong(JSON.stringify(a))