【web_逆向11】JS处理RSA加密

发布时间 2023-08-20 17:33:28作者: Tony_xiao

JS中RSA加密有两套逻辑

  • 1、网易的那种. -> 加密的结果每一次都是一样的;这种没有办法使用python来完成

    • setMaxDigits()
    • RSAKeyPair()
    • encryptedString()
  • 2、某网校的rsa加密 -> 加密的结果每一次都是不一样的;和python的Crypto是相通的. 而用js完成超级简单.

    • new JSEncrypt
    • setPublicKey()
    • encrypt

基于第一点,我们遇到RSA加密,通常都使用JS处理

  • 1、第一种RSA加密处理
    • 本地新建myrsa.js文件,直接拷贝下面4个文件的所有内容到此文件上;https://ohdave.com/rsa/
    • 在文件最后,导出
module.exports = {
	setMaxDigits,
	RSAKeyPair,
	encryptedString
};
- 使用,直接导入
var {
	setMaxDigits,
	RSAKeyPair,
	encryptedString
} = require("./myrsa");

function c(a, b, c) {
	var d, e;
	return setMaxDigits(131),
	d = new RSAKeyPair(b,"",c),
	e = encryptedString(d, a)
}
  • 第二种RSA处理
//npm install node-jsencrypt
var JSEncrypt = require("node-jsencrypt");
function func_second(e){
	var i = new JSEncrypt;
	return i.setPublicKey("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDA5Zq6ZdH/RMSvC8WKhp5gj6Ue4Lqjo0Q2PnyGbSkTlYku0HtVzbh3S9F9oHbxeO55E8tEEQ5wj/+52VMLavcuwkDypG66N6c1z0Fo2HgxV3e0tqt1wyNtmbwg7ruIYmFM+dErIpTiLRDvOy+0vgPcBVDfSUHwUSgUtIkyC47UNQIDAQAB"),
	i.encrypt(e)
}