古典+ezRSA

news/2024/10/9 0:17:22/文章来源:https://www.cnblogs.com/snoozy/p/18453316

古典密码

 

在线工具:https://ctf.bugku.com/tools.html

一键解码工具库:随波逐流,在github上下载即可

注:古典密码只需做个了解,因为很多都是靠工具实现的,多刷题有个印象,遇到题能看出像什么密码就好。

Base家族

在密码学领域,"base" 通常指的是一种编码方式,用于将二进制数据转换为可打印的ASCII字符集。最常见的两种base编码是Base64和Base32。这些编码方法在密码学中用于安全地传输数据,尤其是在电子邮件和网页中,因为它们可以确保数据在传输过程中不会被破坏或误解。

以下是Base64和Base32的简要介绍:

1.  **Base64**:

*   Base64是一种编码方式,它使用64个字符(A-Z, a-z, 0-9, +, /)来表示二进制数据。
*   它通常用于电子邮件和网页中,以确保数据在传输过程中的完整性。
*   Base64编码不是加密,它只是一种编码方式,任何人都可以解码Base64编码的数据。
*   在密码学中,Base64常用于编码密钥或证书等敏感信息,以便于传输。
2.  **Base32**:

*   Base32是一种使用32个字符(A-Z, 2-7)的编码方式。
*   它比Base64更安全,因为它不包含容易被混淆的字符(如+和/)。
*   Base32编码通常用于需要更高安全性的场合,例如在无线网络中传输密钥。
*   与Base64一样,Base32也不是加密,它只是一种编码方式。

在密码学中,Base编码通常与加密技术结合使用,以确保数据的安全性。例如,数据在加密后可能会使用Base64编码,以便于在网络上传输。然而,需要注意的是,Base编码本身并不提供任何加密保护,它只是确保数据在传输过程中不会因为特殊字符而出现问题。

总结来说,密码学中的"base"家族指的是一系列用于编码二进制数据的编码方式,其中Base64和Base32是最常见的。这些编码方式在确保数据传输的完整性和可读性方面发挥着重要作用,但它们并不提供加密保护。

MD5爆破

MD5(Message Digest Algorithm 5)是一种广泛使用的密码散列函数,它能够产生一个128位的散列值,通常用于确保信息传输的完整性和一致性。然而,由于MD5算法的安全性在现代已经被广泛质疑,它容易受到碰撞攻击,因此不再推荐用于安全相关的应用。

MD5爆破是指通过尝试所有可能的输入值来找到与给定MD5散列值相匹配的原始消息或密码的过程。这种方法通常用于破解使用MD5加密的密码。由于MD5的输出长度固定为128位,理论上存在无限多的输入可以产生相同的输出,但在实际应用中,由于计算资源的限制,通常只能尝试有限数量的输入。

MD5爆破通常涉及以下几个步骤:

1.  **获取MD5散列值**:首先需要有一个目标MD5散列值,这通常是从数据库或文件中获取的。

2.  **构建字典**:为了提高爆破效率,通常会使用预先构建的字典文件,其中包含了大量常见的密码或单词。这些字典文件是根据语言习惯、流行文化、历史数据等构建的。

3.  **尝试匹配**:使用专门的工具或脚本,将字典中的每个条目通过MD5算法进行散列,然后与目标散列值进行比较。如果找到匹配的散列值,那么对应的字典条目就是原始消息或密码。

4.  **暴力破解**:如果字典攻击不成功,可能会尝试暴力破解,即尝试所有可能的字符组合。这种方法计算量巨大,通常只在密码长度较短或字符集较小时才可行。
由于MD5算法的安全性不足,现在许多安全系统已经不再使用MD5作为加密手段。对于需要高安全性的应用,推荐使用更安全的散列函数,如SHA-256或SHA-3。此外,为了防止密码被爆破,建议使用强密码策略,包括使用足够长的密码、包含大小写字母、数字和特殊字符的组合,并定期更换密码。

凯撒密码

凯撒密码(Caesar Cipher)是一种古老的替换加密技术,由罗马共和国的军事统帅尤利乌斯·凯撒(Julius Caesar)所使用,因此得名。这种加密方法的基本原理是通过将明文中的每个字母按照一个固定的数目进行移位来生成密文。

**凯撒密码的工作原理**:

1.  **移位规则**:在凯撒密码中,每个字母都向右移动固定的位置数(称为“移位数”或“密钥”)。例如,如果移位数为3,那么明文中的每个字母都会向右移动3个位置。

2.  **字母表循环**:由于字母表是循环的,当字母移动到字母表的末尾时,它会“环绕”回到字母表的开头。例如,字母Z向右移动3个位置后,将变为C。

3.  **加密过程**:加密时,将明文中的每个字母按照移位规则进行替换。例如,明文“HELLO”使用移位数3加密后,将变为“KHOOR”。

4.  **解密过程**:解密时,将密文中的每个字母按照移位规则的逆向进行替换。例如,密文“KHOOR”使用移位数3解密后,将变为“HELLO”。
**凯撒密码的示例**:

*   明文:HELLO
*   移位数:3
*   加密后的密文:KHOOR

**凯撒密码的局限性**:

凯撒密码的安全性非常低,因为它只有25种可能的移位数(从1到25,因为移位数为0时没有变化)。这种加密方法很容易被破解,尤其是通过频率分析,即分析密文中字母出现的频率来猜测移位数。在现代,凯撒密码已经不再被用作安全的加密手段,但它作为加密技术的历史起点,对于理解密码学的基础原理仍然具有重要意义。

ROT

ROT(Rotation)是一种简单的替换密码,它是凯撒密码的一种变体,其中最常见的是ROT13。ROT13是一种对称加密算法,它将字母表中的每个字母向前或向后移动13个位置。由于英文字母表有26个字母,因此ROT13实际上是自己的逆过程,即加密和解密使用相同的步骤。

**ROT13的工作原理**:

1.  **移位规则**:在ROT13中,每个字母都向右移动13个位置。例如,字母A会变为N,字母B会变为O,以此类推。

2.  **字母表循环**:与凯撒密码类似,字母表是循环的,所以当字母移动到字母表的末尾时,它会“环绕”回到字母表的开头。例如,字母Z向右移动13个位置后,将变为M。

3.  **加密过程**:加密时,将明文中的每个字母按照移位规则进行替换。例如,明文“HELLO”使用ROT13加密后,将变为“URYYB”。

4.  **解密过程**:解密时,将密文中的每个字母按照移位规则的逆向进行替换。由于ROT13是自己的逆过程,所以解密步骤与加密步骤相同。例如,密文“URYYB”使用ROT13解密后,将变为“HELLO”。
**ROT13的示例**:

*   明文:HELLO
*   加密后的密文:URYYB

**ROT13的应用**:

ROT13最初用于Usenet新闻组,以隐藏可能被认为是剧透或不适当的内容。由于其简单性,ROT13并不提供实际的安全性,但它可以作为一种简单的文本隐藏方法。在现代,ROT13主要用于教育和娱乐目的,展示基本的密码学概念。

**ROT13的局限性**:

ROT13的安全性非常低,因为它只有一种可能的移位数(13),并且加密和解密过程相同。这种加密方法很容易被破解,尤其是通过直接应用ROT13算法或使用频率分析。在实际应用中,ROT13不提供任何有意义的安全保护,但它作为密码学的一个简单示例,有助于理解更复杂的加密技术。

栅栏密码

栅栏密码(Fence cipher),也称为栅格密码或折线密码,是一种古老的古典加密技术,它属于替换密码的一种,但与简单的替换(如凯撒密码)不同,栅栏密码使用了字母的排列方式来加密,而不是简单的字母替换。

**栅栏密码的工作原理**:

1.  **创建栅栏**:首先,将明文按照一定的行数和列数(通常是奇数)排列成一个网格,形成一个“栅栏”或“阶梯”形状。例如,如果使用3x3的网格,那么每行和每列会有3个字符。

2.  **加密过程**:从左上角开始,按照栅栏的走向逐行读取字符,然后将这些字符按照字母顺序替换为另一个字母表中的字符。如果遇到行的末尾,就从下一行的开头开始读取,直到读完整个网格。这个过程可能会导致字符在加密后的文本中交错出现。

3.  **解密过程**:解密时,遵循同样的规则,但需要知道加密时的栅栏布局,以知道每个字符的原始位置。
**栅栏密码的示例**:

假设明文是 "MATHEMATICS",使用3x3的栅栏密码,可能的布局和加密结果如下:

M   A   T
H   E   M
A   T   I
C   S   (空格)
加密后可能得到 "BZPQVJZQUB",解密时需要知道原来的栅栏布局才能还原。

**栅栏密码的局限性**:

*   **复杂性**:对于小的栅栏(如3x3),加密和解密相对容易,因为字符分布相对固定。但随着栅栏尺寸的增加,解密会变得更加困难,因为它需要记忆更多的字符位置。
*   **安全性**:由于栅栏密码依赖于特定的栅栏布局,它对简单的频率分析攻击比较敏感,但现代密码学已经远远超过了它的安全级别。
*   **实用性**:在现代通信中,栅栏密码并不实用,因为它容易被破解,特别是在没有保密栅栏布局的情况下。

栅栏密码主要用于教学和历史研究,展示了密码学的早期发展和基本概念。

HASH算法

密码学哈希函数(Hash Algorithm),也称为散列函数或哈希函数,是一种用于数据完整性检查、密码存储、消息认证码(MAC)生成等重要安全操作的算法。它的核心特性包括:

1.  **单向性(One-wayness)**:哈希函数是单向的,即给定输入(明文)无法从输出(散列值)反向推导出原始输入。这是为了保护密码,例如存储在数据库中的用户密码,即使被泄露,也无法直接解密。

2.  **确定性(Determinism)**:对于相同的输入,哈希函数总是产生相同的输出,即输入相同,输出也相同。这是为了保证数据的一致性。

3.  **碰撞(Collision Resistance)**:虽然理论上存在两个不同的输入产生相同输出的可能,但在实际应用中,优质的哈希函数应该尽可能地减少这种碰撞的可能性。理想的哈希函数应该有无限大的输出空间,远大于可能的输入空间。

4.  **效率(Efficiency)**:哈希函数通常需要快速执行,以便在实时应用中使用,如在线交易验证。
常见的哈希算法有:

*   **MD5(Message-Digest Algorithm 5)**:早期的哈希算法,已被发现存在碰撞,不适用于安全性要求高的场景。
*   **SHA-1(Secure Hash Algorithm 1)**:对MD5的改进,但同样存在碰撞风险,现在也不推荐用于安全应用。
*   **SHA-2(Secure Hash Algorithm 2)系列**:包括SHA-224、SHA-256、SHA-384和SHA-512,安全性更高,SHA-384和SHA-512常用于存储密码。
*   **SHA-3(Secure Hash Algorithm 3)**:由NIST推荐的下一代哈希函数,提供更好的安全性和抵抗碰撞的能力。

在密码学中,哈希函数广泛用于密码存储(通过散列和盐值混合避免彩虹表攻击)、消息认证码(如HMAC,结合密钥和哈希),以及数据完整性检查(如文件校验和)。但需要注意的是,哈希函数不应该用于加密,因为它们是不可逆的,不适合提供保密性。

RSA

就用题来记录叭~

[LitCTF 2023]家人们!谁懂啊,RSA签到都不会 (初级)

附件:

from Crypto.Util.number import *
from secret import flagm = bytes_to_long(flag)
p = getPrime(512)
q = getPrime(512)
e = 65537
n = p*q
c = pow(m,e,n)
print(f'p = {p}')
print(f'q = {q}')
print(f'c = {c}')
'''
p = 12567387145159119014524309071236701639759988903138784984758783651292440613056150667165602473478042486784826835732833001151645545259394365039352263846276073
q = 12716692565364681652614824033831497167911028027478195947187437474380470205859949692107216740030921664273595734808349540612759651241456765149114895216695451
c = 108691165922055382844520116328228845767222921196922506468663428855093343772017986225285637996980678749662049989519029385165514816621011058462841314243727826941569954125384522233795629521155389745713798246071907492365062512521474965012924607857440577856404307124237116387085337087671914959900909379028727767057
'''

思路:

最简单的RSA,p,q是两个素数,n = p*q,所以n的欧拉值phi = (p-1)*(q-1),给定p,q,c,直接求密钥d = inverse(e,phi),m = pow(c,d,n),最后解出flag

exp:

p = 12567387145159119014524309071236701639759988903138784984758783651292440613056150667165602473478042486784826835732833001151645545259394365039352263846276073
q = 12716692565364681652614824033831497167911028027478195947187437474380470205859949692107216740030921664273595734808349540612759651241456765149114895216695451
c = 108691165922055382844520116328228845767222921196922506468663428855093343772017986225285637996980678749662049989519029385165514816621011058462841314243727826941569954125384522233795629521155389745713798246071907492365062512521474965012924607857440577856404307124237116387085337087671914959900909379028727767057
e = 65537from Crypto.Util.number import *
import gmpy2n = p*qphi = (p-1)*(q-1)d = inverse(e, phi)m = pow(c,d,n)print(long_to_bytes(m))

 [羊城杯 2021]Bigrsa

附件:

from Crypto.Util.number import *
from flag import *n1 = 103835296409081751860770535514746586815395898427260334325680313648369132661057840680823295512236948953370895568419721331170834557812541468309298819497267746892814583806423027167382825479157951365823085639078738847647634406841331307035593810712914545347201619004253602692127370265833092082543067153606828049061
n2 = 115383198584677147487556014336448310721853841168758012445634182814180314480501828927160071015197089456042472185850893847370481817325868824076245290735749717384769661698895000176441497242371873981353689607711146852891551491168528799814311992471449640014501858763495472267168224015665906627382490565507927272073
e = 65537
m = bytes_to_long(flag)
c = pow(m, e, n1)
c = pow(c, e, n2)print("c = %d" % c)# output
# c = 60406168302768860804211220055708551816238816061772464557956985699400782163597251861675967909246187833328847989530950308053492202064477410641014045601986036822451416365957817685047102703301347664879870026582087365822433436251615243854347490600004857861059245403674349457345319269266645006969222744554974358264

思路:

有两个模数,是个素数共享问题,去求p,q。求p = gcd(n1,n2),再分别求对应的q1,q2,最后正常RSA就行。

exp:


c = 60406168302768860804211220055708551816238816061772464557956985699400782163597251861675967909246187833328847989530950308053492202064477410641014045601986036822451416365957817685047102703301347664879870026582087365822433436251615243854347490600004857861059245403674349457345319269266645006969222744554974358264
n1 = 103835296409081751860770535514746586815395898427260334325680313648369132661057840680823295512236948953370895568419721331170834557812541468309298819497267746892814583806423027167382825479157951365823085639078738847647634406841331307035593810712914545347201619004253602692127370265833092082543067153606828049061
n2 = 115383198584677147487556014336448310721853841168758012445634182814180314480501828927160071015197089456042472185850893847370481817325868824076245290735749717384769661698895000176441497242371873981353689607711146852891551491168528799814311992471449640014501858763495472267168224015665906627382490565507927272073
e = 65537from Crypto.Util.number import *
from gmpy2 import invertq = GCD(n1, n2)
p1 = n1 // q
p2 = n2 // q
d1 = invert(e, (q - 1) * (p1 - 1))
d2 = invert(e, (q - 1) * (p2 - 1))t = pow(c,d2,n2)
m = pow(t,d1,n1)print(long_to_bytes(m))

[SWPU 2020]happy

附件:

('c=', '0x7a7e031f14f6b6c3292d11a41161d2491ce8bcdc67ef1baa9eL')
('e=', '0x872a335')
#q + q*p^3 =1285367317452089980789441829580397855321901891350429414413655782431779727560841427444135440068248152908241981758331600586
#qp + q *p^2 = 1109691832903289208389283296592510864729403914873734836011311325874120780079555500202475594

思路:

c,e是用十六进制给出的,先转化成10进制,c最后的'L'是表示长整型,不在16进制内。直接解方程解出p,q再正常RSA就行。

exp:

# ('c=', '0x7a7e031f14f6b6c3292d11a41161d2491ce8bcdc67ef1baa9eL')
# ('e=', '0x872a335')
#q + q*p^3 =1285367317452089980789441829580397855321901891350429414413655782431779727560841427444135440068248152908241981758331600586
#qp + q *p^2 = 1109691832903289208389283296592510864729403914873734836011311325874120780079555500202475594c = '0x7a7e031f14f6b6c3292d11a41161d2491ce8bcdc67ef1baa9e'
c = int(c,16)
e = '0x872a335'
e = int(e,16)t1 = 1285367317452089980789441829580397855321901891350429414413655782431779727560841427444135440068248152908241981758331600586
t2 = 1109691832903289208389283296592510864729403914873734836011311325874120780079555500202475594from gmpy2 import *
from Crypto.Util.number import *
from sympy import *# p,q = symbols('p,q')# a = solve([t1 - q - p*p*p*q, t2 - p*p*q-q*p], [p,q])
q = 827089796345539312201480770649
p = 1158310153629932205401500375817#q = 1285367317452089980789441829580397855321901891350429414413655782431779727560841427444135440068248152908241981758331600586phi = (p-1)*(q-1)n = p*qd = gmpy2.invert(e,phi) m = pow(c,d,n)print(long_to_bytes(m))

[SWPUCTF 2021 新生赛]crypto2

附件:

from gmpy2 import *
from Crypto.Util.number import *flag  = '***************'p = getPrime(512)
q = getPrime(512)
m1 = bytes_to_long(bytes(flag.encode()))n = p*q
e1 = getPrime(32)
e2 = getPrime(32)
print()flag1 = pow(m1,e1,n)
flag2 = pow(m1,e2,n)
print('flag1= '+str(flag1))
print('flag2= '+str(flag2))
print('e1= ' +str(e1))
print('e2= '+str(e2))
print('n= '+str(n))#flag1= 100156221476910922393504870369139942732039899485715044553913743347065883159136513788649486841774544271396690778274591792200052614669235485675534653358596366535073802301361391007325520975043321423979924560272762579823233787671688669418622502663507796640233829689484044539829008058686075845762979657345727814280
#flag2= 86203582128388484129915298832227259690596162850520078142152482846864345432564143608324463705492416009896246993950991615005717737886323630334871790740288140033046061512799892371429864110237909925611745163785768204802056985016447086450491884472899152778839120484475953828199840871689380584162839244393022471075
#e1= 3247473589
#e2= 3698409173
#n= 103606706829811720151309965777670519601112877713318435398103278099344725459597221064867089950867125892545997503531556048610968847926307322033117328614701432100084574953706259773711412853364463950703468142791390129671097834871371125741564434710151190962389213898270025272913761067078391308880995594218009110313

思路:

共模攻击,有两个e只有一个模数,x*e1 + y*e2  = gcd(e1,e2),则m = pow(flag1,x,n) * pow(flag2,y,n) % n

exp:

flag1= 100156221476910922393504870369139942732039899485715044553913743347065883159136513788649486841774544271396690778274591792200052614669235485675534653358596366535073802301361391007325520975043321423979924560272762579823233787671688669418622502663507796640233829689484044539829008058686075845762979657345727814280
flag2= 86203582128388484129915298832227259690596162850520078142152482846864345432564143608324463705492416009896246993950991615005717737886323630334871790740288140033046061512799892371429864110237909925611745163785768204802056985016447086450491884472899152778839120484475953828199840871689380584162839244393022471075
e1= 3247473589
e2= 3698409173
n= 103606706829811720151309965777670519601112877713318435398103278099344725459597221064867089950867125892545997503531556048610968847926307322033117328614701432100084574953706259773711412853364463950703468142791390129671097834871371125741564434710151190962389213898270025272913761067078391308880995594218009110313from gmpy2 import *
from Crypto.Util.number import *s,x,y = gmpy2.gcdext(e1,e2)m = pow(flag1,x,n) * pow(flag2,y,n) % nprint(long_to_bytes(m))

[鹤城杯 2021]Crazy_Rsa_Tech

附件:

代码:

from Crypto.Util.number import *
from Crypto.Util.Padding import *FLAG = bytes_to_long(pad(b"flag{??????}",64))
def init_key():p, q = getPrime(512), getPrime(512)n = p*qe = 9while(GCD((p-1)*(q-1),e)!=1):p, q = getPrime(512), getPrime(512)n = p*qd = inverse(e,(p-1)*(q-1))return n,e,dn_list=list()
c_list=list()
for i in range(9):N,e,d=init_key()n_list.append(N)c=pow(FLAG,e,N)c_list.append(pow(FLAG,e,N))assert(pow(c,d,N)==FLAG)
print("n_list:",n_list)
print("c_list:",c_list)

output:

n_list: [71189786319102608575263218254922479901008514616376166401353025325668690465852130559783959409002115897148828732231478529655075366072137059589917001875303598680931962384468363842379833044123189276199264340224973914079447846845897807085694711541719515881377391200011269924562049643835131619086349617062034608799, 92503831027754984321994282254005318198418454777812045042619263533423066848097985191386666241913483806726751133691867010696758828674382946375162423033994046273252417389169779506788545647848951018539441971140081528915876529645525880324658212147388232683347292192795975558548712504744297104487514691170935149949, 100993952830138414466948640139083231443558390127247779484027818354177479632421980458019929149817002579508423291678953554090956334137167905685261724759487245658147039684536216616744746196651390112540237050493468689520465897258378216693418610879245129435268327315158194612110422630337395790254881602124839071919, 59138293747457431012165762343997972673625934330232909935732464725128776212729547237438509546925172847581735769773563840639187946741161318153031173864953372796950422229629824699580131369991913883136821374596762214064774480548532035315344368010507644630655604478651898097886873485265848973185431559958627423847, 66827868958054485359731420968595906328820823695638132426084478524423658597714990545142120448668257273436546456116147999073797943388584861050133103137697812149742551913704341990467090049650721713913812069904136198912314243175309387952328961054617877059134151915723594900209641163321839502908705301293546584147, 120940513339890268554625391482989102665030083707530690312336379356969219966820079510946652021721814016286307318930536030308296265425674637215009052078834615196224917417698019787514831973471113022781129000531459800329018133248426080717653298100515701379374786486337920294380753805825328119757649844054966712377, 72186594495190221129349814154999705524005203343018940547856004977368023856950836974465616291478257156860734574686154136925776069045232149725101769594505766718123155028300703627531567850035682448632166309129911061492630709698934310123778699316856399909549674138453085885820110724923723830686564968967391721281, 69105037583161467265649176715175579387938714721653281201847973223975467813529036844308693237404592381480367515044829190066606146105800243199497182114398931410844901178842049915914390117503986044951461783780327749665912369177733246873697481544777183820939967036346862056795919812693669387731294595126647751951, 76194219445824867986050004226602973283400885106636660263597964027139613163638212828932901192009131346530898961165310615466747046710743013409318156266326090650584190382130795884514074647833949281109675170830565650006906028402714868781834693473191228256626654011772428115359653448111208831188721505467497494581]
c_list: [62580922178008480377006528793506649089253164524883696044759651305970802215270721223149734532870729533611357047595181907404222690394917605617029675103788705320032707977225447998111744887898039756375876685711148857676502670812333076878964148863713993853526715855758799502735753454247721711366497722251078739585, 46186240819076690248235492196228128599822002268014359444368898414937734806009161030424589993541799877081745454934484263188270879142125136786221625234555265815513136730416539407710862948861531339065039071959576035606192732936477944770308784472646015244527805057990939765708793705044236665364664490419874206900, 85756449024868529058704599481168414715291172247059370174556127800630896693021701121075838517372920466708826412897794900729896389468152213884232173410022054605870785910461728567377769960823103334874807744107855490558726013068890632637193410610478514663078901021307258078678427928255699031215654693270240640198, 14388767329946097216670270960679686032536707277732968784379505904021622612991917314721678940833050736745004078559116326396233622519356703639737886289595860359630019239654690312132039876082685046329079266785042428947147658321799501605837784127004536996628492065409017175037161261039765340032473048737319069656, 1143736792108232890306863524988028098730927600066491485326214420279375304665896453544100447027809433141790331191324806205845009336228331138326163746853197990596700523328423791764843694671580875538251166864957646807184041817863314204516355683663859246677105132100377322669627893863885482167305919925159944839, 2978800921927631161807562509445310353414810029862911925227583943849942080514132963605492727604495513988707849133045851539412276254555228149742924149242124724864770049898278052042163392380895275970574317984638058768854065506927848951716677514095183559625442889028813635385408810698294574175092159389388091981, 16200944263352278316040095503540249310705602580329203494665614035841657418101517016718103326928336623132935178377208651067093136976383774189554806135146237406248538919915426183225265103769259990252162411307338473817114996409705345401251435268136647166395894099897737607312110866874944619080871831772376466376, 31551601425575677138046998360378916515711528548963089502535903329268089950335615563205720969393649713416910860593823506545030969355111753902391336139384464585775439245735448030993755229554555004154084649002801255396359097917380427525820249562148313977941413268787799534165652742114031759562268691233834820996, 25288164985739570635307839193110091356864302148147148153228604718807817833935053919412276187989509493755136905193728864674684139319708358686431424793278248263545370628718355096523088238513079652226028236137381367215156975121794485995030822902933639803569133458328681148758392333073624280222354763268512333515]

思路:

低指数加密广播攻击,e很小且有多组n,c,掌握中国剩余定理即可,可以直接用crt,然后开e次方即可。

exp:

from Crypto.Util.number import *
from Crypto.Util.Padding import *
import gmpy2
import libnum
from sympy.ntheory.modular import crtn_list = [71189786319102608575263218254922479901008514616376166401353025325668690465852130559783959409002115897148828732231478529655075366072137059589917001875303598680931962384468363842379833044123189276199264340224973914079447846845897807085694711541719515881377391200011269924562049643835131619086349617062034608799, 92503831027754984321994282254005318198418454777812045042619263533423066848097985191386666241913483806726751133691867010696758828674382946375162423033994046273252417389169779506788545647848951018539441971140081528915876529645525880324658212147388232683347292192795975558548712504744297104487514691170935149949, 100993952830138414466948640139083231443558390127247779484027818354177479632421980458019929149817002579508423291678953554090956334137167905685261724759487245658147039684536216616744746196651390112540237050493468689520465897258378216693418610879245129435268327315158194612110422630337395790254881602124839071919, 59138293747457431012165762343997972673625934330232909935732464725128776212729547237438509546925172847581735769773563840639187946741161318153031173864953372796950422229629824699580131369991913883136821374596762214064774480548532035315344368010507644630655604478651898097886873485265848973185431559958627423847, 66827868958054485359731420968595906328820823695638132426084478524423658597714990545142120448668257273436546456116147999073797943388584861050133103137697812149742551913704341990467090049650721713913812069904136198912314243175309387952328961054617877059134151915723594900209641163321839502908705301293546584147, 120940513339890268554625391482989102665030083707530690312336379356969219966820079510946652021721814016286307318930536030308296265425674637215009052078834615196224917417698019787514831973471113022781129000531459800329018133248426080717653298100515701379374786486337920294380753805825328119757649844054966712377, 72186594495190221129349814154999705524005203343018940547856004977368023856950836974465616291478257156860734574686154136925776069045232149725101769594505766718123155028300703627531567850035682448632166309129911061492630709698934310123778699316856399909549674138453085885820110724923723830686564968967391721281, 69105037583161467265649176715175579387938714721653281201847973223975467813529036844308693237404592381480367515044829190066606146105800243199497182114398931410844901178842049915914390117503986044951461783780327749665912369177733246873697481544777183820939967036346862056795919812693669387731294595126647751951, 76194219445824867986050004226602973283400885106636660263597964027139613163638212828932901192009131346530898961165310615466747046710743013409318156266326090650584190382130795884514074647833949281109675170830565650006906028402714868781834693473191228256626654011772428115359653448111208831188721505467497494581]
c_list = [62580922178008480377006528793506649089253164524883696044759651305970802215270721223149734532870729533611357047595181907404222690394917605617029675103788705320032707977225447998111744887898039756375876685711148857676502670812333076878964148863713993853526715855758799502735753454247721711366497722251078739585, 46186240819076690248235492196228128599822002268014359444368898414937734806009161030424589993541799877081745454934484263188270879142125136786221625234555265815513136730416539407710862948861531339065039071959576035606192732936477944770308784472646015244527805057990939765708793705044236665364664490419874206900, 85756449024868529058704599481168414715291172247059370174556127800630896693021701121075838517372920466708826412897794900729896389468152213884232173410022054605870785910461728567377769960823103334874807744107855490558726013068890632637193410610478514663078901021307258078678427928255699031215654693270240640198, 14388767329946097216670270960679686032536707277732968784379505904021622612991917314721678940833050736745004078559116326396233622519356703639737886289595860359630019239654690312132039876082685046329079266785042428947147658321799501605837784127004536996628492065409017175037161261039765340032473048737319069656, 1143736792108232890306863524988028098730927600066491485326214420279375304665896453544100447027809433141790331191324806205845009336228331138326163746853197990596700523328423791764843694671580875538251166864957646807184041817863314204516355683663859246677105132100377322669627893863885482167305919925159944839, 2978800921927631161807562509445310353414810029862911925227583943849942080514132963605492727604495513988707849133045851539412276254555228149742924149242124724864770049898278052042163392380895275970574317984638058768854065506927848951716677514095183559625442889028813635385408810698294574175092159389388091981, 16200944263352278316040095503540249310705602580329203494665614035841657418101517016718103326928336623132935178377208651067093136976383774189554806135146237406248538919915426183225265103769259990252162411307338473817114996409705345401251435268136647166395894099897737607312110866874944619080871831772376466376, 31551601425575677138046998360378916515711528548963089502535903329268089950335615563205720969393649713416910860593823506545030969355111753902391336139384464585775439245735448030993755229554555004154084649002801255396359097917380427525820249562148313977941413268787799534165652742114031759562268691233834820996, 25288164985739570635307839193110091356864302148147148153228604718807817833935053919412276187989509493755136905193728864674684139319708358686431424793278248263545370628718355096523088238513079652226028236137381367215156975121794485995030822902933639803569133458328681148758392333073624280222354763268512333515]
e = 9x = crt(n_list,c_list)[0]print(x)x = gmpy2.iroot(x,e)[0]print(long_to_bytes(x))

 结语

多刷题多总结~(共联攻击什么的后面再写写)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/810258.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【专题】2024年母婴行业发展趋势洞察报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37818 在当今消费市场中,母婴领域正经历着深刻的变革。随着需求日益多元化,母婴用户的消费习惯和选购考量因素发生了显著变化。 分龄分层产品逐渐成为主流,这背后是用户对个性化解决方案的追求以及对孩子成长各方面的细致关注。同时,母婴…

Serilog文档翻译系列(七) - 应用设置、调试和诊断、开发接收器

Serilog支持通过App.config和Web.config中的01、应用设置 Serilog 支持在 App.config 和 Web.config 文件中使用简单的 配置语法,以设置最低日志级别、为事件添加额外属性以及控制日志输出。 Serilog 主要通过代码进行配置,设置支持旨在作为补充功能。虽然不是全面的,但大多…

【视频讲解】Python量子计算聚类Q-means:量子k-means算法分析电路数据实现可视化

全文链接:https://tecdat.cn/?p=37821 原文出处:拓端数据部落公众号 分析师:Yifan Zhang 量子计算在近期已然成为一个频繁出现的热门概念。尽管它在大众认知以及互联网社区中备受瞩目,热度极高,然而就其实际能力而言,当前仍然存在诸多局限。 量子计算作为一个全新的领域…

每日打卡

今天连接phoenix,版本是5.1.3-hbase-2.5,主要连接dbeaver,idea老是报错。

20222417 2024-2025-1 《网络与系统攻防技术》实验一实验报告

1.实验内容 (1).掌握反汇编与十六进制编程器 (2).能正确修改机器指令改变程序执行流程 (3).能正确构造payload进行bof攻击 2.实验过程 (1).直接修改程序机器指令,改变程序执行流程 将pwn1文件放入共享文件夹,后续在kali中使用,再将文件复制到实验文件夹share路径…

第一课 php基础语法 变量 函数

php语法<?php// 代码段   ?> php输出方法:echo 和 print不同点:echo-能够输出一个以上的字符串,英文逗号隔开print-只能输出一个字符串,并始终返回1echo 比 print 稍快,并且开销低 注释注释不会被作为程序来读取和执行。它唯一的作用是供代码编辑者阅读(让别人…

CentOS 8 停止维护后通过 rpm 包手动安装 docker

根据 Docker官方文档 的指引,进入 Docker rpm 包下载的地址,根据自己系统的架构和具体版本选择对应的路径这里我使用 https://download.docker.com/linux/centos/7/x86_64/stable 版本,根据 docker 官方的给出的安装命令选择性的下载对应的 rpm 包最终使用 yum 命令安装下载…

02 Vue默认项目说明

1. node_modules pnpm 安装的第三方依赖 2. public 公共资源,存放网页图标等 3. src 开发代码存放位置 3.1 项目入口文件 main.ts import { createApp } from vue // 引入vue import ./style.css // 引入默认样式 import App from ./App.vue // 引入页面 App.VuecreateApp(App…

解构UI设计

解构UI设计 第一章 界面类型 1.1 闪屏页 又称为启动页,就是APP启动在进入功能主界面前用户看到的页面。 闪屏页决定了用户对App的第一印象。 闪屏页显示的时间很短,通常只有1秒。 闪屏页分为品牌宣传型、节日关怀型和活动推广型3种类型。 1.1.1 品牌宣传型 App的闪屏页是为体…

创建新的 App 页面

完整的页面创建过程包括三个步骤:在 layout 目录下创建 XML 文件创建与 XML 文件对应的 Java 代码在 AndroidManifest.xml 中注册页面配置实现两个 Activity 相互跳转的代码: MainActivity: package com.example.myapplication1;import androidx.appcompat.app.AppCompatActiv…

[Vue] 异步路由组件和非路由组件的区别?

异步路由组件 都知道异步路由组件通过 () => import("./views/Home.vue") 导入路由组件。 但是它怎么就按需加载资源、代码分割了? 不同的代码解析报告 非异步路由组件异步路由组件

课上测试:位运算(AI)

2.使用位运算编写并调用下面函数,把当前时间(使用C库函数获得)设置到TIME中,给出代码,使用git记录过程。为了使用位运算将当前时间设置到一个自定义的 TIME 结构体或变量中(尽管通常我们不会直接用位运算来处理时间,因为时间通常是由多个独立的字段如小时、分钟、秒等组…