Appearance
加密
- 斯巴达密码
- 凯撒密码
- ascii 码
- 弗吉尼亚码(查表)
- 欧拉函数
工具
yafu
factordb.com
cyberchef,随波逐流 ctf
rsa 脚本
RSA
RSA 算法的具体过程
- 密钥生成: 选择两个大质数 𝑝,𝑞,计算 𝑛=𝑝⋅𝑞。随后,选择一个与欧拉函数 𝜑(𝑛)=(𝑝−1)(𝑞−1)互质的数 𝑒,并计算 𝑑=𝑒^(−1) 𝑚𝑜𝑑 (𝑝−1)(𝑞−1)。 私钥为 d,公钥为(𝑛, 𝑒)。
- 加密:计算 𝐶=𝑚^𝑒 (𝑚𝑜𝑑 𝑛),就得到了密文
- 解密: 收到密文 C 后,计算 𝑐^𝑑=𝑚 (𝑚𝑜𝑑 𝑛)
代码
已知 pqe 求 d
python
import gmpy2
from Crypto.Util import number
p = 473398607161
q = 4511491
e = 17
d = gmpy2.invert(e, (p-1)*(q-1))
print(d)
rsa,已知 pqec
python
p = 1
q = 2
e = 3
c = 4
n = p*q
d = gmpy2.invert(e, (p-1)*(q-1))
# print(d)
m = pow(c, d, n)
print(m)
低指数攻击
python
import gmpy2
n = 1
e = 2
c = 3
k = 0
while 1:
res = gmpy2.iroot(k*n+c, e)
if res[1] is True:
print(bytes.fromhex(hex(res[0])[2:]))
break
k += 1