Hitomi's Note

瞳の笔记

CTF 中的密码学 之 数论

发布于|# CTF# Crypto

模逆

模运算法则

  1. (a+b)mod  p=(amod  p+bmod  p)mod  p(a + b) \mod p = (a \mod p + b \mod p) \mod p

  2. (a×b)mod  p=(amod  p×bmod  p)mod  p(a \times b) \mod p = (a \mod p \times b \mod p) \mod p

  3. (a−b)mod  p=(amod  p−bmod  p)mod  p(a - b) \mod p = (a \mod p - b \mod p ) \mod p

  4. ((a+b)mod  p×c)mod  p=((a×c)mod  p+(b×c)mod  p)mod  p((a +b)\mod p \times c) \mod p = ((a \times c) \mod p + (b \times c) \mod p) \mod p

  5. abmod  p=(amod  p)bmod  pa^b \mod p = (a \mod p)^b \mod p

  6. 若 a≡b(modp)a\equiv b \pmod p,则对于任意的 cc,都有 (a+c)≡(b+c)(modp)(a + c) \equiv (b + c) \pmod p

  7. 若 a≡b(modp)a\equiv b \pmod p,则对于任意的正整数 cc,都有 (a×c)≡(b×c)(modp)(a \times c) \equiv (b \times c) \pmod p

欧几里得算法

欧拉函数

欧拉定理

两个推理

首先在 11 到 nn 的数中,与 nn 互质的一共有 φ(n)\varphi(n) 个,所以我们把这 φ(n)\varphi(n) 个数拿出来,放到设出的集合 XX 中,即 x1,x2,⋯ ,xφ(n)x_1,x_2,\cdots,x_{\varphi(n)} ,那么接下来,我们可以再设出一个集合为 MM,设 MM 中的数为:m1=a×x1,m2=a×x2,mφ(n)=a×xφ(n)m_1 = a \times x_1,m_2 = a \times x_2,m_{\varphi(n)}=a \times x_{\varphi(n)}

  1. MM 中任意两个数都不模 nn 同余

  2. MM 中的数除以 nn 的余数全部与 nn 互质

费马大定理

当整数 n>2n>2 时,关于 xn+yn=znx^n + y^n = z^n 的方程没有正整数解。

费马小定理

中国剩余定理

威尔逊定理

离散对数问题

gmpy2 库

gmpy2.mpz  # 类似long类型 长度可达50位
gmpy2.mpq  # 分数类型
gmpy2.mpfr # 与float类型相同,精度可达53位
gmpy2.mpc  # 复数类型

gmpy2.iroot(a, b)     # 返回一个元组 (x, y),其中 x 为 a 开 b 次方的值,y 是判断 x 是否为整数的布尔型变量(即是否能够完整开放)
gmpy2.gcd(a, b)       # 求a和b的最大公约数
gmpy2.lcm(a, b)       # 求a和b的最小公倍数
gmpy2.gcdext(a, b)    # ax + by = gcd(a,b) 求满足贝祖不等式的整数解
gmpy2.powmod(a, n, p) # a^n mod p

gmpy2.is_prime() # 检测素数
gmpy2.is_even()  # 检测奇数
gmpy2.is_odd()   # 检测偶数