Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Floating point 具有浮点值的小e-RSA攻击_Floating Point_Rsa - Fatal编程技术网

Floating point 具有浮点值的小e-RSA攻击

Floating point 具有浮点值的小e-RSA攻击,floating-point,rsa,Floating Point,Rsa,对于一个加密类,我试图通过将明文计算为pow(密文,1./e)来实现“小型e攻击” 当结果是整数时,我已经这样做了,但是当我得到一个浮点值时,我不知道如何将结果转换为表示纯文本的字符串 e1 = 3 n1 = 1317765034729934462475786523757822864638518268838860184276156078903237924372186365754479946268098060134204059638133371015567388524322478725066994

对于一个加密类,我试图通过将明文计算为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'
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'>