我有我试图解码作为实验的一部分的加密文件。 努力工作,不久之后,我已经能够从公开密钥,因为模量小提取专用指数:
OpenSSL的RSA -pubin -inform PEM -text -noout <public_key.pem公钥:(64位)模量:16513720463601767803(0xe52c8544a915157b)指数:65537
我现在有:
Factors: 3917781347 x 4215069449
Private exponent: 9440767265896423601
现在,为了得到明文,我需要的密文的每个64位块提高到专用指数国防部模量。 我想写一个Python脚本,将在十六进制数据的形式做到这一点对我来说。
这是我到目前为止的代码:
#!/usr/bin/python
file = open('encrypted.hex', 'r')
c = file.readline()
d = 0x830457cf1ae460b1
N = 0xe52c8544a915157b
m = hex(pow(c, d, N)).rstrip("L")
f = open('new.try', 'w')
f.write(m)
f.close()
我已经使用xxd
提取从密文文件中的十六进制数据:XXD -p> encrypted.hex
这造成了所谓的“encrypted.hex”文件的十六进制转储。 这个文件的内容开始是这样的:
7d4554292d7b9f980ed049cea0f968cf438b6fc312cf2028ce5ce2fe9f38
387b72a01bf6564f25884a2cacd187c2eeccd0cf78c2a74785f18d5e72b5
270ac3e45b6f7505347b38ec7684b1af206d73ea4a84cd59b50be56d7abf
74a569868406ab2b17846c9e448fe1392b21dac0b10fbb733536c99e598b
683be7400a1ad55c42faa171becd803b8b8f4a1fa512a33222ec042486c5
672f6200d4f00e2994b6d247a44edb6ce90795bde7ccda4433cf6fca8362
f87c68f9df6418c4f0b8fb9da39a1d173fea2b1466e646f01e2dc7fb0499
311d35ec75c15c5910b2d3e0c662de0b3b1716bab44faa2a36538bb44f6a
3c3abd37692cf95fa075b58485ad983533782d7bf51e10c0e3b18ccec972
...等等。 该工具“XXD”创建hexdump都和插入换行符我想。
所以,“C”是ciphertext
,“d”为所述private exponent
,“N”是在modulus
和“m”是应该包含明文十六进制字节。
然而,剧本给了我这个错误:
Traceback (most recent call last):
File "final.py", line 8, in <module>
m = hex(pow(c, d, N)).rstrip("L")
TypeError: unsupported operand type(s) for pow(): 'str', 'long', 'long'
任何人都可以纠正我的Python脚本,以便它能够根据需要破译密文?