软院田园老师的课,虽然上课没听(我觉得他讲得不好),自己看书也差不多看懂了七七八八,以下是看书过程中列出的部分重点
数论
- 欧几里得算法三形式,思路
- 欧拉定理、费马定理证明
- 中国剩余定理 计算 可能和低幂次RSA攻击结合
- 二次剩余 和概率性素数判断
代数
见下文
公钥密码学
- RSA算法,计算、加密解密过程
数字签名
- ElGamal 和 Schnorr 签名方案
- 签名方案和加密方案结合的应用
加密协议
- AES和DES,不直接考,要从协议分析题中能认出哪种对称加密
Hash函数
需要了解的几个基本知识点:
d 整除a记作:
d∣a
整除是d作分母
如果d∣a
且d∣b
,那么d∣(ax+by)
c=gcd(a,b)
,表示a和b的最大公因子,也表明c|a
,c|b
,且a和b的任何公因子都是c的因子。定义gcd(0,0)=0
,gcd(0,a)=|a|
(因为0被任何非零整数整除)
因为最大公因子是正数,所以gcd(a,b) = gcd(|a|,|b|)
算术基本定理:任意大于1的整数N,都有图示成立
可以通过这个简单地判断一个数是否是素数,也可以对合数作质因子分解
素数(也叫质数),指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数。大于1的自然数若不是素数,则称之为合数(如果n是一个合数,则在小于等于√n的数中必定有一个数a整除合数n)
任意两个质数互质,且唯一的正整数公因子是1。p是大于1的整数,则p和p−1构成互质关系;p是大于1的奇数,则p和p−2构成互质关系
素数p与1到p−1的任意整数均互质。并且阶乘(p−1)!
与p互质欧几里得定理:存在无穷个素数。也用来容易地求两个整数的最大公因子
对于整数a和b,用b除a得a = q1b+r1
,可证明d=gcd(a,b)=gcd(b,r1)=gcd(ri,ri+1)=gcd(rn,0)=rn
,也就是下图给出的
改进版的欧几里得定理公式:
d=gcd(a,b)=gcd(b,a mod b)
,下面的算法就是这样的
//欧几里德算法迭代实现
public static int getGCD(int a,int b) {
if (a<b) {
//保证a>=b
return getGCD(b, a);
}
if (b>=1) {
//保证b>=1
int temp = 0;
while(b>0) {
temp = a%b;
a = b;
b = temp;
}
return a;
}else {
return -1;
}
}
看到一个证明 gcd(n,k)=gcd(n,n+k)挺有趣的,通过gcd的定义来证:
同理也可以证明gcd(a,n)=gcd(n,n-a)等等
模运算和同余:
a≡b(mod n)
表示a mod n = b mod n
同余。a mod n
是a除以n的余数,n|a可以表示为a≡0(mod n)
还有啥负数对整数求模时,比如-11 mod 7 = 3 = -2*7+3
模运算性质:
若n|(a-b)
,则a≡b(mod n)
同余方程:
上图的
ax ≡ c(mod m)
也称线性同余方程,线性是指方程的未知数是一次的,方程有解当且仅当gcd(a,m)|c
,且恰有d=gcd(a,m)
个解(在模 m 的完全剩余系 {0,1,…,m-1} 中)**模反元素:**指正整数a和m互质,一定可以找到整数b,使得
m|ab-1
**裴蜀定理:**关于线性方程ax+by=d有解,当且仅当gcd(a,b)|d
扩展的欧里几德定理,求同余方程解、RSA中也用来求私钥中的d
费马定理:
如果p是素数,且a是不被p整除的正整数,则 $ a^{p-1} mod : p=1 , 即 ,即 ,即 a^{p-1}=1(mod : p) $
舍去a不被p整除的条件,则$ a^{p-1}=a(mod : p) $
证明:
{a mod p,2a mod p,...,(p-1)a mod p}是{1,2,...,p-1}的置换形 所以,{a×2a×...×(p-1)a}≡(1×2×...×(p-1))(mod p)≡(p-1)!(mod p) 化简,(p-1)!a^(p-1)≡(p-1)!(mod p) 因为p为质数,且p和1到p-1中整数都互质,所以可消去(p-1)!,得a^(p-1)≡1(mod p)
欧拉函数ϕ(m),表示1到m-1中与m互质的整数个数。因此有两个结论:
欧拉定理
如果
gcd(a,m)=1
(a,m互质),则$ a^{ϕ(m)}=1(mod : m) $同上但a,m不互质,则$ a^{ϕ(m)}=a(mod : m) $
证明:
考虑集合 R = { x 1 , x 2 , . . . , x ϕ ( m ) } R=\left \{ x_{1} ,x_{2},...,x_{ϕ(m)} \right \} R={ x1,x2,...,xϕ(m)}, S = { a x 1   m o d   m , a x 2   m o d   m , . . . , a x ϕ ( m )   m o d   m } S=\left \{ ax_{1} \: mod \: m ,ax_{2}\: mod \: m,...,ax_{ϕ(m)} \: mod \: m \right \} S={ ax1modm,ax2modm,...,axϕ(m)modm},每一个元素 x i x_i xi都与m互质,且 x i ≠ x j x_i \neq x_j xi̸=xj,则 a x i   m o d   m ≠ a x j   m o d   m ax_{i} \: mod \: m \neq ax_{j} \: mod \: m aximodm̸=axjmodm(即S中不含重复元素)
所以S也是R的一个置换形
所以
a ϕ ( m ) ∗ x 1 ∗ x 2 ∗ . . . ∗ x ϕ ( m )   m o d   m = ( a x 1 ) ∗ ( a x 2 ) ∗ . . . ∗ ( a x ϕ ( m ) )   m o d   m = ( ( a x 1   m o d   m ) ∗ ( a x 2   m o d   m ) ∗ . . . ∗ ( a x ϕ ( m )   m o d   m ) )   m o d   m = x 1 ∗ x 2 ∗ . . . ∗ x ϕ ( m )   m o d   m 因 为 x i 与 m 互 质 , 所 以 两 边 可 以 消 去 x 1 ∗ x 2 ∗ . . . ∗ x ϕ ( m ) 得 : a ϕ ( m )