對於加密類,我試圖通過將明文計算爲pow(密文,1/e)來實現「小e攻擊」。小浮點值的RSA攻擊
當結果是一個整數時,我做了它,但是當我得到一個浮點數時,我不知道如何將該結果轉換爲表示我的明文的字符串。
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'>
有人能幫助我嗎?
我不明白的問題一個int。你期望什麼輸出? float值的十六進制表示是否意味着包含解密明文的ASCII明文? '4.23125987157e + 59'變成'0x7F800000',這似乎不是很有用(它基本上是「無窮大」)。 – Tawnos
加密計算通常使用整數和模算術完成。例如,1/2 = 3(模5)。由於3 * 2 = 6 = 1(mod 5) – Ben