[AFCTF2018]One Secret, Two encryption(考点:公钥解析,gcd())

flag_encry1文件

螲繓r??28#_f鑑V枫戟>?靆鰵?崃mk?k稽jRL@f_離峹??$?"鰌'曣誨?磈j鵾挬"^>a4?缆鰿t?檣駼'?铯鮗籊邆w咗?玈獥鉹谸?饏s}?U4z?澴?F牶劰BS?,衃F=nP?
譅Q%(?y価?簃覮=€w]mWg嗧糢?]b?S菾?跹瑂a.鞸寖娿饟~'uN?D7
5斨C?Au>羋T??y(DM

flag_encry2文件

?繨楺o偈?n(汏E*A聦t??`N`搯痲>0gh茅翭V筇旎畨 ?雧翍Om袥bZ?4鶒懍x趽巂\紧Z€_┅颌J魓?汕苤t4q??aR幚鯞腻s'仩愓楫?	sZ酨A咓蝘玧?留S?瓘顂eJv$洶[yD噓蟟K棠嶅э毽 頶??e姲H屁3倔擿In6?弈Z跟誺F蠎 @偖??~v圣V??@`3扲瑭ir^?嘭l舑-繇?

public1文件

-----BEGIN PUBLIC KEY-----
MIICIDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAQAma/gXML+bivU20mJu55PZ
SjNAE6S0PQ2WV5sYIA7ZLbJ6lshW8cfohErN0TUIv+6O+hXSMFd4wrv27+f6akPE
qeNL6LWjKqcnC9I03vbyYDZuLkfeoPwM9UHIuRUfU/l/LDOCkjkOkHN5SMufg66y
OGc4wLDi9f8sET4QMerAVF/HZ7acpYYCu8QoWnOSy9KiVzKQMzKkaL+WcN2sbLsA
61zjixv7ybMHDmcyMKHb5VbfPsqMW19roYLV5luY3SlrhTogmyGg19Q3k7hYW3ca
Jc7WLEbPD/OnlHMDLArNUYMyB9t0CdLNZZCHE6pbiMaNGS+rwGcqxHbWCpGCS0vZ
AoIBAA0zxRVob0N2SXRSPv7GRHMzj/mpACiz3VrKtwKgm+MM1UrnvbtCpPcqjqw6
4w7HJqf6O/ccA7l0qY35jbvhOLD2II6rf8USZwkm27ygOuHA3SRS9XZyzpshUmRO
YyJtogGntK4R9R7wfW1HHJbIj5R3/HV/gYdT9XxKq7yICxFSVv3u1lgVBjNeUzTn
5MzOlX9tCEjcS54eq9OCGLEIetj24xTfsruKf/DDGNTRA1et8fU4H49NMsqqHL1R
ZdKvy1SEBWoOrj/XQycz0Dsyre0jcaDWnaywlulHGrPKXYc6ePAJ9S7IMOTKblCf
FU9nj28KAsm/RBAV3PEMkJ3edPM=
-----END PUBLIC KEY-----

public2文件

-----BEGIN PUBLIC KEY-----
MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQASwScpBgKVbfU6JjRoIA9v
JkVCapA5hkllstoPZhO6T1mQZK5DSD+ggwMXu/Ivfa3qKsnQ9zFrvIULjWk52+/+
q1sckgVNXKE9K8RREuj0ChN1Qzx24dpmtz60ObxxQESRkSpLD8wvDTurAd1rolaK
qqS2uXxv9CzbrMzSZOD1UDEmKa/JSXy3YvQ67S4c3NOQVgwHcAmQuqWZTmVuFxsb
l1hwmWSPMgTcNkFpMcjeCx0+DuuN/lTqQWFygJGBRnAvLwSpXUuq747FQiilca5P
+7fiz2Tb2OEn2/WE41vjqMVHUjGxY+RseDpND71FOvkGl8ixWEq8ebflkadtVcK1
AgMBAAE=
-----END PUBLIC KEY-----

题面:

一份秘密发送给两个人不太好吧,那我各自加密一次好啦~~~
素数生成好慢呀
偷个懒也……不会有问题的吧?

两份public文件的公钥解析内容:

e1 = 1666626632960368239001159408047765991270250042206244157447171188195657302933019501932101777999510001235736338843107709871785906749393004257614129802061081155861433722380145001537181142613515290138835765236002811689986472280762408157176437503021753061588746520433720734608953639111558556930490721517579994493088551013050835690019772600744317398218183883402192060480979979456469937863257781362521184578142129444122428832106721725409309113975986436241662107879085361014650716439042856013203440242834878648506244428367706708431121109714505981728529818874621868624754285069693368779495316600601299037277003994790396589299
n1 = 4850297138162223468826481623082440249579136876798312652735204698
6896139690086325452209766991703084540823908347425707182478042020
6092949357164207467942856516840587711068151810566730178565351769
7684490982375078989886040451115082120928982588380914609273008153
9779079505324986054862258839736431415160240583153605729887446071
3411025448942151602693724916349398268133662872603348912470565721
7768229058487155865265080427488028921879608338898933540825564889
0121661813461772766398283463763621689342088224672956737618769658
6457316452933688525057735776731425658101947413065141210089783960
6491189424373959244023695669653213498329
e2 = 65537
n2 = 2367536768672000959668181171787295271898789288397672997134843418
9324059599467396373680444203198617978567714905734430035201371493
2408021797183678057052225866141903448151488306809275216675296787
9497095564732505614751532330408675056285275354250157955321457579
0063603932183271648049513842900419565518553344927967199018181657
8890254758456345574794151729687569724184117721963502446139559611
7584194226134777078874543699117761893699634303571421106917894215
0789388859999635805868244970400732410558903287943100258790142940
5123059071656294253803188396531739772827158975971837607341463202
6801806560862906691989093298478752580277

题面中提到,生成素数好慢,偷个懒。这个可以猜测,加密人使用了相同的素数。
EXP:

from gmpy2 import*
from Crypto.Util.number import*
from libnum import*
n1 = int('0x266BF81730BF9B8AF536D2626EE793D94A334013A4B43D0D96579B18200ED92DB27A96C856F1C7E8844ACDD13508BFEE8EFA15D2305778C2BBF6EFE7FA6A43C4A9E34BE8B5A32AA7270BD234DEF6F260366E2E47DEA0FC0CF541C8B9151F53F97F2C338292390E90737948CB9F83AEB2386738C0B0E2F5FF2C113E1031EAC0545FC767B69CA58602BBC4285A7392CBD2A25732903332A468BF9670DDAC6CBB00EB5CE38B1BFBC9B3070E673230A1DBE556DF3ECA8C5B5F6BA182D5E65B98DD296B853A209B21A0D7D43793B8585B771A25CED62C46CF0FF3A79473032C0ACD51833207DB7409D2CD65908713AA5B88C68D192FABC0672AC476D60A91824B4BD9',16)
e1 = int('0xd33c515686f43764974523efec64473338ff9a90028b3dd5acab702a09be30cd54ae7bdbb42a4f72a8eac3ae30ec726a7fa3bf71c03b974a98df98dbbe138b0f6208eab7fc512670926dbbca03ae1c0dd2452f57672ce9b2152644e63226da201a7b4ae11f51ef07d6d471c96c88f9477fc757f818753f57c4aabbc880b115256fdeed6581506335e5334e7e4ccce957f6d0848dc4b9e1eabd38218b1087ad8f6e314dfb2bb8a7ff0c318d4d10357adf1f5381f8f4d32caaa1cbd5165d2afcb5484056a0eae3fd7432733d03b32aded2371a0d69dacb096e9471ab3ca5d873a78f009f52ec830e4ca6e509f154f678f6f0a02c9bf441015dcf10c909dde74f3',16)

n2 = int('0x12C127290602956DF53A263468200F6F2645426A9039864965B2DA0F6613BA4F599064AE43483FA0830317BBF22F7DADEA2AC9D0F7316BBC850B8D6939DBEFFEAB5B1C92054D5CA13D2BC45112E8F40A1375433C76E1DA66B73EB439BC71404491912A4B0FCC2F0D3BAB01DD6BA2568AAAA4B6B97C6FF42CDBACCCD264E0F550312629AFC9497CB762F43AED2E1CDCD390560C07700990BAA5994E656E171B1B97587099648F3204DC36416931C8DE0B1D3E0EEB8DFE54EA41617280918146702F2F04A95D4BAAEF8EC54228A571AE4FFBB7E2CF64DBD8E127DBF584E35BE3A8C5475231B163E46C783A4D0FBD453AF90697C8B1584ABC79B7E591A76D55C2B5',16)
e2 = 65537

p = gcd(n1,n2)
assert is_prime(p)
# print(p)
q1 = n1//p
q2 = n2//p

phi1 = (q1-1)*(p-1)
phi2 = (q2-1)*(p-1)
d1 = invert(e1,phi1)
d2 = invert(e2,phi2)
# print(d1,d2)
f = open('flag_encry1.py','rb').read()
c = bytes_to_long(f)
# print(f)
m = pow(c,d1,n1)
print(long_to_bytes(m))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值