Floating point 具有浮点值的小e-RSA攻击
对于一个加密类,我试图通过将明文计算为pow(密文,1./e)来实现“小型e攻击” 当结果是整数时,我已经这样做了,但是当我得到一个浮点值时,我不知道如何将结果转换为表示纯文本的字符串Floating point 具有浮点值的小e-RSA攻击,floating-point,rsa,Floating Point,Rsa,对于一个加密类,我试图通过将明文计算为pow(密文,1./e)来实现“小型e攻击” 当结果是整数时,我已经这样做了,但是当我得到一个浮点值时,我不知道如何将结果转换为表示纯文本的字符串 e1 = 3 n1 = 1317765034729934462475786523757822864638518268838860184276156078903237924372186365754479946268098060134204059638133371015567388524322478725066994
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'
e1=3
n1=1317765034299344642475786852375782286463851826883886018427615607890323792437218636575447994626809806013420405963813371015567388524322478725066945703804462119164975870681766313564970132104530751563867169844174377001259661011608457555555555509108141877920581772056108545454356685907019953464507309263
密码1='\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\xfa\xb1\xb1\x85\xf6\x65\xf6\xf6\xf6\x56\x56\xf6\xf6\xf6\xf6\xf6\xf6\xf6\xf6\xf6需要使用一种更具体地表示整数模运算的整型算法来完成这些
计算整数1/e1 mod n1
(查找计算)
计算整数pow(密码1,1/e1模n1)模n1
(查找)
这将给你一个整数,你可以将它转换成明文。我不明白这个问题。你希望从中得到什么输出?浮点值的十六进制表示法是否意味着包含解密明文的ASCII明文?4.23125987157e+59
变成0x7F800000
,这似乎不是很有用(基本上是“无穷大”)。加密计算通常使用整数和模运算完成。例如1/2=3(mod 5)。因为3*2=6=1(mod 5)读者注意:在这个答案中,1/e1 mod n1
不是经典的“1除以e1”。它是“某个整数x使得x*e1与1模n1全等”。(粗略地说,如果两个数被n1除时具有相同的余数,则它们是模n1的全等数。)具有此属性的x
类似于e1
的乘法逆,因为对于与n1
相对素数的任何整数t
,t*e1*x
与t
模n1一致。
但使用经典除法无法找到x
。
4.23125987157e+59 <type 'float'>