对于加密类,我试图通过将明文计算为pow(密文,1 / e)来实现“小e攻击”。
当结果是整数时,我已经完成了它,但是当我得到一个浮点数时,我不知道如何将该结果转换为表示我的纯文本的字符串。
e1 = 3
n1 = 131776503472993446247578652375782286463851826883886018427615607890323792437218636575447994626809806013420405963813337101556738852432247872506699457038044621191649758706817663135648397013226104530751563478671698441687437700125203966101608457556637550910814187779205610883544935666685906870199595346450733709263
cipher1 = '\x04\xacq#E/\xf4X\x126\xef\xc6\xb1\xfc\x10p*\x98P\xde\x089K\x16y0\xfa\xde\x9f\x05\x15+\xa3\x0f\xbc3\xd1t\xe7\x9a\x1b\x04m\xa1\x12\x96\x18Y\xf9\xc95\xce\x19 E\xfa\xe1\xb5\x8a\xd5\xf2\x99\xa6"<\xcb\x1a\xd0\xce=\x91\xfbw\t\xb5'
我可以将cipher1转换为位然后转换为整数(称之为cipher1_int)以便我可以运行
M 1 = POW(cipher1_int,1。/ E1)
,结果是
4.23125987157e+59 <type 'float'>
有人可以帮助我吗?
答案 0 :(得分:2)
这些计算需要使用模运算,更具体地说是mod n1。获取表示明文的整数...
1/e1 mod n1
。 (查看计算modular inverses)pow(cipher1, 1/e1 mod n1) mod n1
(查找modular exponents)这将为您提供一个可以转换为明文的int