首页 > 其他分享 >JS逆向中特殊RSA加密密钥

JS逆向中特殊RSA加密密钥

时间:2024-04-12 15:44:49浏览次数:20  
标签:公钥 加密 cryptography RSA JS 密钥 import

在对某个网站的接口进行逆向的时候发现其使用了RSA加密,但是其中的密钥生成方式比较特殊。
JS部分代码如下所示:

var f = new n.jsbn.BigInteger("9E08DA9CB4357388754D6AFF8ED0E1A9C46CD927291ACBC26C08E97E80BC8FFA1F9ABD31CDE9587785183A51********************************************************",16)
//密钥部分做了脱敏
  , u = new n.jsbn.BigInteger("10001",16)
  , C = n.pki.rsa.setPublicKey(f, u)
  , y = function(l) {
	var D = C.encrypt(l, "RSA-OAEP", {
		md: n.md.sha1.create(),
		mgf1: {
			md: n.md.sha1.create()
		}
	});
	return n.util.encode64(D);
	}

可以看到这里加密用到的公钥比较特殊,与我们常见的标准公钥格式并不一致,标准的公钥是英文大小写+数字+特殊符号,而这里的密钥格式为大写字母+数字。因为格式不对是无法直接按照常规的RSA加密来实现的。

经过一番查找资料后,才知道这是使用模数和指数来生成公钥,进而进行RSA加密的过程。其中9E08DA9CB4357388754D6AF开头的这部分是模数的16进制形式,而10001则是指数65537的16进制形式。关于模数和指数生成RSA密钥的具体实现可以自行搜索研究,而我们目前要做的是使用python实现这个加密,也就是使用cryptography这个模块来完成模数和指数生成密钥并且加密的过程。
所以以上JS代码可以使用以下python代码实现:

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import rsa
import base64

need_encrypt_str = "test"


# 模数
modulus_hex = "9E08DA9CB4357388754D6AFF8ED0E1A9C46CD927291ACBD****************"
modulus = int(modulus_hex, 16)
# 公钥
public_key = rsa.RSAPublicNumbers(
    e=65537,  # 公钥指数
    n=modulus
).public_key(default_backend())


# 使用RSA-OAEP填充方案和SHA-256哈希函数加密数据
encrypted_data = public_key.encrypt(
    need_encrypt_str.encode("utf-8"),
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA1()),
        algorithm=hashes.SHA1(),
        label=None
    )
)

encrpted_str = base64.b64encode(encrypted_data).decode("utf-8")

print(encrpted_str)

标签:公钥,加密,cryptography,RSA,JS,密钥,import
From: https://www.cnblogs.com/dingnosakura/p/18131379

相关文章

  • 量化系统JSON数据包组织数据(全)
    {'timetag':'2024041209:40:21',--时间'lastPrice':9.02,--最新价'open':8.55,--开盘价'high':9.3,--当前最高价'low':8.4,--当天最低价'lastClose':8.48,--昨收盘'amount':11701.75,--成交量......
  • js 模拟等待(阻塞)
    functionsleep(ms){returnnewPromise(resolve=>setTimeout(resolve,ms));}//使用方法asyncfunctionrun(){console.log('开始等待...');awaitsleep(2000);//等待2000毫秒(2秒)console.log('等待结束!');}run();在这个例子中,wait函数返回一个P......
  • js设置浏览器全屏,无地址栏
    html:<p><buttonid="view-fullscreen">全屏</button><buttonid="cancel-fullscreen">退出</button></p>js://JavaScriptDocument(function(){varviewFullScreen=document.getEleme......
  • golang JSON序列化和反序列化
    目录JSON序列化(Marshaling)JSON反序列化(Unmarshaling)错误处理和注意事项在Go语言(通常被称为Golang)中,JSON(JavaScriptObjectNotation)是一种常用的数据交换格式。Go标准库提供了encoding/json包,使得JSON的序列化(将Go数据结构转换为JSON格式的字符串)和反序列化(将JSON格式的字符串......
  • 52 Things: Number 21: How does the CRT method improve performance of RSA?
    52Things:Number21:HowdoestheCRTmethodimproveperformanceofRSA?52件事:第21件:CRT方法如何提高RSA的性能? Thisisthelatestinaseriesofblogpoststoaddressthelistof '52ThingsEveryPhDStudentShouldKnow' todoCryptography:asetofqu......
  • 52 Things: Number 15: Key generation, encryption and decryption algorithms for R
    52Things:Number15:Keygeneration,encryptionanddecryptionalgorithmsforRSA-OAEPandECIES.52件事:第15件:RSA-OAEP和ECIES的密钥生成、加密和解密算法。 Thisisthelatestinaseriesofblogpoststoaddressthelistof  '52ThingsEveryPhDStuden......
  • 1st Universal Cup 做题笔记
    Stage1:Shenyanghttps://qoj.ac/contest/1096A只需要考虑每个pair的贡献即可,而相交的pair数量是线性的,因此可以暴力搞,剩下的不相交的pair拿前缀和做就行了,复杂度\(\mathcalO(n\logn)\)。cornercase是当一方的区间全部退化的时候,需要重新计算一下出现的概率。BC......
  • 【论文随笔】会话推荐系统综述(A Survey on Conversational Recommender Systems)
    前言今天读的论文为一篇于2021年5月发表在《ACM计算机调查》(ACMComputingSurveys)的论文,文章提供了对话式推荐系统(CRS)的全面综述,探讨了CRS的定义、概念架构、交互方式、知识元素、计算任务以及评估方法。文章还讨论了CRS在不同应用环境中的实现,如智能家居助手和聊天机器人,并指......
  • 30 天精通 RxJS (14):Observable Operator - throttle, debounce
    昨天讲到了在UI操作上很常用的delay,今天我们接着要来讲另外两个也非常实用operators,尤其在做性能优化时更是不可或缺的好工具!Operatorsdebounce跟buffer、bufferTime一样,Rx有debounce跟debounceTime一个是传入observable另一个则是传入毫秒,比较常用到的是de......
  • 论文解读(UGfromer)《Universal Graph Transformer Self-Attention Networks》
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:UniversalGraphTransformerSelf-AttentionNetworks论文作者:论文来源:2022aRxiv论文地址:download论文代码:download视屏讲解:click1-摘要我们引入了一个基于变压器的GNN模型,称为UGfromer,来学习图表示。特别......