Skip to content

欧拉欧拉!!

pq 的生成方式独特,其中有

q=x+i

通过 x = (1 << bits) - 1 ^ p 这行代码了解到,在二进制中,p 和 512 个 1 异或得到 x,则

p+x=2512

(举例说明一下)不懂的同学可以了解一下二进制加法

python
a = 0b1001
b = a ^ 0b1111 = 0b0110
a + b = 1111

推导得到

p+q=2512+i

φ 分解,有

φ=(p1)(q1)=n(p+q)+1

代入,得

φ=n(25121+i)+1=n2512+2i

EXP 如下

python
from Crypto.Util.number import *
c = 14859652090105683079145454585893160422247900801288656111826569181159038438427898859238993694117308678150258749913747829849091269373672489350727536945889312021893859587868138786640133976196803958879602927438349289325983895357127086714561807181967380062187404628829595784290171905916316214021661729616120643997
n = 18104347461003907895610914021247683508445228187648940019610703551961828343286923443588324205257353157349226965840638901792059481287140055747874675375786201782262247550663098932351593199099796736521757473187142907551498526346132033381442243277945568526912391580431142769526917165011590824127172120180838162091
i = -3
e = 65537

phi = n - 2**512 + 2 - i
d = inverse(e, phi)
m = pow(c, d, n)
print(long_to_bytes(m))