In [2]:
public_n = \
22372619959586467809053769802237882581889757027732230613227897011530894747842858329994040492955713812652880210316692276105745796102474026823431443637835477569820625810377604850561976805688874758480340509611039549618351710307607148236316902456036244332445469171187516730474414325624749009364540468215844150201715175116969584764047838883378221778667124769930558663215690234394466659983499287582590375304084076006630565952551582630555131604012723576961862172273313304550004488482503262713337752113748914744383454611253319544464446490060830564840412409920562387134666345154211491259741325073094718648719808043783683189701
public_e = 65537
In [3]:
private_d = 14133902744812220985065737386851016258571213363736477777125511084859142701755311708450848505879814745643944632005462720411465175336538629057944856507580485494045857613669590820877024057951027383392000520613178364478822891830048045507548845879232626212616380977076716285332440855148106920285030883402361953564996342093748544501656221848060636048433669717073299900023888736667454647424318766739445323802460465528460018946841056490388592466553275171933082665705325130863355860051682107146041624010449129671140426329975498065074036695970491481220325803442936435082954436275979649964957506060992855890597177373657315727621
In [4]:
private_p = 165365953863350613045144760416078784491530172837607650081851239467597104613581918552784675052485741907750556552005247877207346048055338110005922218895057721963481234725012850536896536840110704560284977548027345682653828809054302101512301103705695351447389288662458108053747092124995562454758441145895232434923
In [5]:
private_q = 135291572641814640217393269005910240360716152346607618986902875926435402573077067220684907409489029716620649892319338661021210561862706459565691936028549206203368578970467968005001225109331164529012369283895871775228554957440166117489971746756863385081485570603801343021625465595025978006340488856746999631887
In [7]:
private_p * private_q == public_n
Out[7]:
In [21]:
nnnn1 = """00:b1:39:ac:7a:26:07:72:5e:93:76:14:d9:53:99:
e8:50:93:cf:b5:ff:1b:1c:0e:e6:c0:61:2b:b9:6a:
5a:b6:3f:20:a5:cd:0b:cc:55:05:4d:41:bf:71:a1:
2c:44:78:53:03:ae:65:2a:0c:7b:46:4c:41:f3:b7:
76:a8:33:8f:89:86:14:e5:97:0a:bf:11:d2:57:33:
2a:8a:62:21:fa:86:24:79:3a:cf:83:fb:d7:c8:e8:
ab:43:44:46:4f:a3:bb:bc:ed:8b:32:ce:2b:d8:f8:
5c:df:6e:99:f7:73:1d:07:6d:63:f6:5c:c1:37:f7:
97:5b:a6:d7:dd:e9:80:bd:f0:0b:4d:d9:4d:a6:bb:
39:bd:04:7f:73:89:74:ff:6a:43:53:89:e8:ee:bc:
8b:89:d8:b0:5f:37:1c:c2:8a:a3:16:10:45:ac:93:
b9:05:3f:db:79:73:fa:3c:4f:55:93:21:f3:b0:15:
8c:9d:bc:82:6f:28:b7:d9:d9:29:c8:98:8e:db:73:
0c:bb:f4:af:c9:fb:cd:95:ff:05:4e:e5:7b:4f:be:
64:ef:5d:43:44:ff:3d:fe:24:53:39:29:50:5d:27:
c6:c8:9e:cb:5e:17:2a:b1:e9:aa:14:c4:dc:03:07:
49:4f:c3:04:bd:6d:19:da:2b:64:58:1c:1d:e6:42:
2b:c5"""
In [25]:
prime1 = """00:eb:7d:2a:d9:14:de:9a:d9:48:81:0b:24:e4:a1:
bc:91:ca:2b:d0:be:2f:7b:68:67:ff:f6:27:df:5f:
c1:bd:1e:8a:ad:9f:32:18:9c:2e:67:fe:b2:df:2f:
1c:78:d6:91:37:a7:bf:ae:0e:00:a2:7a:b2:bf:d9:
46:f7:38:9f:de:2f:ea:5d:14:2b:5d:11:8b:f1:f5:
a2:12:4f:4c:9a:57:50:47:a6:16:e4:c9:2f:96:4d:
09:96:22:27:5a:18:9a:8b:d9:38:f3:a8:41:ab:72:
b9:55:c4:86:21:af:34:68:f9:06:fb:c2:da:bd:b7:
c3:cc:7f:28:59:57:4b:72:eb"""
prime2 = """00:c0:a9:5e:43:7f:d1:7b:3b:1c:d1:94:32:f5:cf:
7e:7f:ae:b8:dd:c7:9c:24:46:38:6d:42:37:1c:81:
66:b5:21:ac:ea:a3:2e:7a:0e:fb:de:a6:ee:0c:4f:
89:ed:7c:d8:fe:9f:65:24:bb:3f:bb:dc:74:2e:39:
d3:25:16:c4:f2:f3:b6:28:d1:58:7c:76:b1:9f:0c:
28:5c:1d:5e:56:6d:7e:be:61:2c:66:65:25:ea:e5:
f6:f5:d8:f5:a7:b4:ac:8f:1c:40:eb:d4:ec:52:fc:
6c:b2:95:47:60:c3:d2:0e:c2:4a:b0:8d:a6:2d:95:
ba:e9:79:c6:cd:11:87:50:0f"""
In [13]:
def toInt(s):
pieces = s.split(":")
result = 0
for p in pieces:
assert(len(p)!=0)
result *= 256
result += int(p, base=16)
return result
def toInt2(s):
pieces = s.split(":")
result = 0
xx = 1
for p in pieces:
result += int(p, base=16)*xx
xx *= 256
return result
In [22]:
toInt(nnnn1)
Out[22]:
In [24]:
toInt(prime1)
Out[24]:
In [26]:
toInt(prime2)
Out[26]:
In [27]:
toInt(prime2)*toInt(prime1) == toInt(nnnn1)
Out[27]:
In [28]:
e = 65537
In [29]:
totient = public_n - ( private_p + private_q - 1)
In [30]:
totient
Out[30]:
In [31]:
( private_d * e ) % totient
Out[31]:
In [33]:
dmp1 = private_d % (private_p - 1)
dmp1
Out[33]:
In [35]:
dmp2 = private_d % (private_q - 1)
dmp2
Out[35]:
In [ ]:
iqmp =