2021hgame_aes_and_DH 出现了g**a mod p和g**b mod p,可以猜到是 Differ-Hellman密钥交换, 即真正的密钥是g**ab mod p,但因为a,b未知,所以要把a,b求出 正常情况下是要求离散对数的,但因为对话中有提示是在加法群下操作的, 而在加法群中,幂即重复调用改群的运算,即g**a mod p是a*g mod p 又因为A = a*g mod p所以a=A*g-1 mod p(g-1是 2021-03-19 ctf-crypto -Crypto -ctf -DH -aes
rsa初期 RSA常见题型一、普通解密(给出e,c,且已知p,q或较易分解的n)可以直接根据RSA的基本原理写出脚本,对于较易分解的n可以使用factor网站在线质因数分解,也可以使用yafu工具进行分解。 基本解密过程: phi(n)=(p-1)*(q-1) #计算欧拉函数 ed≡1 mod phi(n) #通过该表达式求密钥d c**d≡m mod n #最后求得明文m 注意:计算出的m是一串数字,要得到 2021-03-19 ctf-crypto -Crypto -ctf -rsa -aes
ElGamal ElGamalElGamal算法此时有一个需被加密的消息x。 密钥生成: 随机取一个大素数p,并取Zp*的一个本原元作为α,再从{2,…,p-2}中随机取一个数作为d,计算β ≡ αd mod p 。({d}为私钥,{p,α,β}为公钥。) 加密: 再次从{2,…p-2}中随机取一个数作为r,计算kr≡αr mod p。计算km≡βr mod p。 计算y≡km*x mod p,y就是加密出的密文 2021-03-19 knowledge-crypto -Crypto -ElGaml
2020BJDasa 2020BJDasa可以发现两个n公用了一个p,那么求取两个n的最大公因数就可以得到p,这样一来两个n就都可以被分解了。 123456789101112import gmpy2 as gpfrom Crypto.Util.number import long_to_bytesn1=0x661d752110bcc6ee5ca33edaf244716cccce6400dfdbfd84ce6ae2d8f 2021-03-19 ctf-crypto -Crypto -ctf -rsa -aes