Encryption RSA私钥计算[MADLIB]

Encryption RSA私钥计算[MADLIB],encryption,cryptography,rsa,private-key,Encryption,Cryptography,Rsa,Private Key,如何计算私钥(d)? 问题是d(私钥)必须是一个整数,但我一直得到d=0.0000152585。。请帮忙 p=920920768058925337397247226026686758406710930085202415481919142153998240203720761864607682068149144238022303984109802187419069605271045689702258043744046126177365792869598652872265386929113765079

如何计算私钥(d)? 问题是d(私钥)必须是一个整数,但我一直得到d=0.0000152585。。请帮忙

p=92092076805892533739724722602668675840671093008520241548191914215399824020372076186460768206814914423802230398410980218741906960527104568970225804374404612617736579286959865287226538692911376507934256844456333236362669879347073756238894784951597211105734179388300051579994253565459304743059533646753003894559

q=97846775312392801037224396977012615848433199640105786119757047098757998273009741128821931277074555731813289423891389911801250326299324018557072727051765547115514791337578758859803890173153277252326496062476389498019821358465433398338364421624871010292162533041884897182597065662521825095949253625730631876637

e=65537

n=9010912747277787249738727439840427055736519196538871349093408340706668231808840540195374015916168031416186859836416053338250477003776576736854137538279810042409758765948034443613881324504120707334213544491046703922409406729564516371394804946909037646047891880347940067132730874804943893719672960932378043325067514786209219718314429979032869544980643978919561908707109629612202311323626173343456843249212057093980583352634168733656443959925428846968193413110401346035535595817965624054783296380268863401241570313602685481219583686719199499297832165308522137209299081956650614940546284136240753995440003473611843518083

ϕ(n)=9010912747277787249738727439840427055736519196538871349093408340706668231808840540195374015916168031416186859836416053338250477003776576736854137538279810042409758765948034443613881324504120707334213544491046703922409406729564516371394804946909037646047891880347940067132730874804943893719672960932378043324975422709403327184574705256430200869139972885911041667158917715396802487303254097156996075042397142670178352954223188514914536999398324277997967608735996733417799016531005758767556757687357486893307313469146352244856913807372125743058937380356924926103564902568350563360552030570781449252380469826858839623524
因此,根据公式:

d=e-1模块Ф(n)

我一直得到0.0000152585。有什么想法吗?

根据标准,在RSA中必须使用λ而不是φ

λ(n)=lcm(p−1,q−1)
要计算
d=e-1模λ(n)
,必须使用算法

找到令人满意的x和y

取模λ(n)


您需要使用模乘逆,而不是逆。 下面是python中使用
加密
模块的一个示例

from cryptography.hazmat.primitives.asymmetric.rsa import _modinv

p=92092076805892533739724722602668675840671093008520241548191914215399824020372076186460768206814914423802230398410980218741906960527104568970225804374404612617736579286959865287226538692911376507934256844456333236362669879347073756238894784951597211105734179388300051579994253565459304743059533646753003894559
q=97846775312392801037224396977012615848433199640105786119757047098757998273009741128821931277074555731813289423891389911801250326299324018557072727051765547115514791337578758859803890173153277252326496062476389498019821358465433398338364421624871010292162533041884897182597065662521825095949253625730631876637
e=65537

phi = (p-1) * (q-1)
d = _modinv(e, phi)

print(d)              #  1405046269503207469140791548403639533127416416214210694972085079171787580463776820425965898174272870486015739516125786182821637006600742140682552321645503743280670839819078749092730110549881891271317396450158021688253989767145578723458252769465545504142139663476747479225923933192421405464414574786272963741656223941750084051228611576708609346787101088759062724389874160693008783334605903142528824559223515203978707969795087506678894006628296743079886244349469131831225757926844843554897638786146036869572653204735650843186722732736888918789379054050122205253165705085538743651258400390580971043144644984654914856729
print((e * d) % phi)  #  1

您可以在这里找到的实现。

所以我猜“e”是整数?φ(n)是模吗?我找到了这个python3脚本()用于模乘逆,并在脚本中替换了p、q和e,对我有用。但谢谢你的回答,我认为这是你解决问题的好办法。:)RSA与phi(Euler)或lambda(Carmichael)合作,最初的CACM论文使用Euler(尽管RSALabs发布的PKCS1使用Carmichael);关于这一点,crypto.SX上有很多Q。NIST喜欢禁止安全性不需要的任何变化,以减少互操作性问题的机会,因此Carmichael。注:在您之前的评论中,您希望使用lcm()*gcd()而不是lcm()*gcd(lcm()),这毫无意义。@dave_thompson_085感谢您注意到错误和信息。请使用标准。这就是使用φ的教科书RSA。使用此关系查找
λ(n)
lcm(p−1,q−1) *gcd(p−1,q−1) =(p−1) *(q)−1) 
。上一个有粘贴复制错误。多亏了戴夫
e x ≡ 1 mod λ(n)
from cryptography.hazmat.primitives.asymmetric.rsa import _modinv

p=92092076805892533739724722602668675840671093008520241548191914215399824020372076186460768206814914423802230398410980218741906960527104568970225804374404612617736579286959865287226538692911376507934256844456333236362669879347073756238894784951597211105734179388300051579994253565459304743059533646753003894559
q=97846775312392801037224396977012615848433199640105786119757047098757998273009741128821931277074555731813289423891389911801250326299324018557072727051765547115514791337578758859803890173153277252326496062476389498019821358465433398338364421624871010292162533041884897182597065662521825095949253625730631876637
e=65537

phi = (p-1) * (q-1)
d = _modinv(e, phi)

print(d)              #  1405046269503207469140791548403639533127416416214210694972085079171787580463776820425965898174272870486015739516125786182821637006600742140682552321645503743280670839819078749092730110549881891271317396450158021688253989767145578723458252769465545504142139663476747479225923933192421405464414574786272963741656223941750084051228611576708609346787101088759062724389874160693008783334605903142528824559223515203978707969795087506678894006628296743079886244349469131831225757926844843554897638786146036869572653204735650843186722732736888918789379054050122205253165705085538743651258400390580971043144644984654914856729
print((e * d) % phi)  #  1