0

对于加密类,我试图通过将明文计算为 pow(ciphertext,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),这样我就可以运行了

m1=pow(cipher1_int,1./e1)

结果是

4.23125987157e+59 <type 'float'>

有人能帮我吗?

4

1 回答 1

2

这些计算需要使用模算术,更具体地说是 mod n1。要获取表示明文的整数...

  1. 计算整数1/e1 mod n1。(查找计算模逆
  2. 计算整数pow(cipher1, 1/e1 mod n1) mod n1(查找模指数

这将为您提供一个 int,您可以将其转换为纯文本

于 2013-09-16T18:26:11.087 回答