网址:aHR0cHM6Ly9wYXNzcG9ydC5vdXJ0ZWFjaGVyLmNvbS5jbi9BY2NvdW50L1BvcnRhbExvZ2luSW5kZXg=
登陆接口分析
发现密码和用户名都进行了加密
跟栈进行分析,找加密位置
熟悉的ajax,打上断点,重复登录
加密函数为encrypt()
进入函数,发现它由这个函数定义,打上断点,分析JSE,进入JSE.setPublicKey
发现它是a3对象的一个方法
a3对象定义如下
函数内部运用了很多前面的定义的函数,我不知道接下来怎么趴下来?有人知道吗?
后面发现,加密的一整个代码属于jsencrypt库的内容
属于RSA的加密方法,这里也提示了公钥是什么。
JSEncrypt 是一个用于在浏览器中进行RSA加密和解密的 JavaScript 库。它提供了一种简单的方式来生成 RSA 密钥对、加密数据并使用私钥解密数据。
以下是 JSEncrypt 模块的一些主要功能和用法:
生成密钥对:使用 JSEncrypt,你可以轻松地生成 RSA 密钥对。你可以通过调用 new JSEncrypt() 创建一个 JSEncrypt 实例,然后使用 getKey() 方法生成密钥对。生成的密钥对包括公钥和私钥。
加密数据:一旦你有了密钥对,你可以使用公钥对数据进行加密。使用 JSEncrypt 的 setPublicKey() 方法设置公钥,然后使用 encrypt() 方法对数据进行加密。加密后的数据可以通过网络传输或存储在数据库中。
解密数据:使用私钥可以对加密的数据进行解密。使用 JSEncrypt 的 setPrivateKey() 方法设置私钥,然后使用 decrypt() 方法对加密的数据进行解密。解密后的数据将恢复为原始的明文数据。
密钥格式:JSEncrypt 支持多种密钥格式,包括 PEM 和 DER。你可以使用 getKey() 方法获取生成的密钥对,并使用 getPrivateKey() 和 getPublicKey() 方法获取私钥和公钥的字符串表示。
密钥长度和算法:JSEncrypt 支持不同长度的密钥,包括 1024 位、2048 位和 4096 位。你可以根据需要选择适当的密钥长度。JSEncrypt 使用 RSA 算法进行加密和解密。
兼容性:JSEncrypt 在大多数现代浏览器中都能正常工作,包括 Chrome、Firefox、Safari 和 Edge。它不需要任何其他依赖项,只需引入 JSEncrypt 库即可开始使用。
原文链接:https://blog.csdn.net/randy521520/article/details/134346184