2 数论基础
注:本内容部分章节知识罗列了大概目录以及主要概念,仅为本人在阅读相关资料时的随笔,有些地方也并不是很理解,暂且挖坑,等随后再填
2.1 整除性和带余除法
2.1.1 整除性
b|a 表示a处以b没有余数,几个重要的性质如下:
- 若 a|1, 则a = ± 1
- 若 a|b 且 b|a, 则a = ±b
- 任何不等于0的树整除0
- 若a|b,b|c, 则a|c
- 对于任意整数m,n,若b|g,b|h, 则有 b|(mg + nh)??
2.1.2 带余除法
对于任意正整数n, 非负整数a,会有:
a = q*n + r 该式被称为带余除法
另外,a为负数时,上式也是成立的,r 称为剩余数
2.2 欧几里得算法
欧几里得算法是数论中的一个最基本的技巧,能简单求出两个整数的最大公因子
2.2.1 最大公因子
2.2.2 求最大公因子
欧几里德算法实现
func gcd(a, b int) int {
if a < b {
a, b = b, a
}
for {
//取余数,若为0,除数就是二者的最大公约数
c := a % b
fmt.Println("c:", c)
if c == 0 {
break
} else {
//除数等于被除数,余数最为除数重新计算余数
a = b
b = c
}
}
return b
}
2.3 模运算
2.3.1 模
若 a = q*n + r r为a模n,计作 a mod n,n称为模数
2.3.2 同余的性质
- n|(a-b),则a和b模n同余
- 交换律:若a和b模n同余,则b和a模n同余
- 传递:若a和b模n同余,b和c模n同余,则a和c模n同余
2.3.3 模算术运算
运算性质:在集合{0,1,… , n}上
- [(a mod n) + (b mod n)] mod n = (a + b) mod n
- [(a mod n) - (b mod n)] mod n = (a - b) mod n
- [(a mod n) x (b mod n)] mod n = (a * b) mod n
如上,普通运算的加减乘运算法则也可以平移到模算术中
另外,在线性代数中,注意 (a + b) mod n 和 (a * b) mod n 所对应的两个矩阵是对称的
2.3.4 模运算的性质
给定一个正整数n,集合[0,n-1] 称为剩余类集,[0],[1],[2],[…],[n-1]称为剩余类,给定任意整数a,都有 r与a模n同余,其中r属于剩余类
两个常识:
-
a的加法逆元为-1 -
a的乘法逆元为1/a
整数模运算的性质:
- 满足加法/乘法 交换律、结合律、分配律、单位元,加法逆(-w)
- a和n互素,若a * b 与 a * c模n同余,则b和c模n同余
2.3.5 回顾欧几里得算法
根据模运算的性质,我们再回过头来看欧几里德算法
欧几里德算法基于下面的定理
gcd(a,b)= gcd(b,a mod b) a>=b>=0
2.3.6 扩展的欧几里得算法
这个问题再议
2.4 素数
任意整数a>1,都可以唯一的因式分解为p1^a1 * p2^a2 * … * pn^an,其中an为正整数,pn为素数,且p1<p2 < … < pn. 这是算术的基本定理
对于一个正数a,它等于几个素数之积累
另外,对于k = ab, 若a = p1p2^(ap); b = p1p2^(bp),则有 kp = ap + bp成立 ??
还有,确定一个大数的因子很困难
2.5 费马定理和欧拉定理
2.5.1 费马定理
若p是素数,a是正整数且不能被p整数,则a^(p-1) mod p与1mod p 同余,另一种方式表示,p是素数,a是任意正整数,a^§ mod p与a mod p 同余
2.5.2 欧拉函数
?(n)是欧拉函数,表示小于n且与n互素的正整数的个数,特别的,当n是素数时,?(n) = n-1
2.5.3 欧拉定理
对于任意a和n互素,都有a^(?(n)) mod n 与 1 mod n 同余,欧拉定理的另一种表述:a^(?(n)+1) mod n 与 a mod n 同余,此时,a与n互素的这个条件也不需要
注意:费马定理和欧拉定理描述了一个数的某素数次方(某素数-1次方)和该素数之间的关系(模 该素数同余、模1同余)
2.6 素性测试
判断一个数是不是素数的方法
2.6.1 Miller-Rabin算法
素数的两个性质
- 若p是素数,a是小于p的正整数,则a^2 mod p =1 (好神奇)
- 若p是大于2的素数,当p-1 = (2^k)*q,q是奇数,k>0,则下面条件之一成立
- a^q mod p 与 1 mod p同余
- 整数a^q, a(2q),…,a((2^(k-1))*q)中存在一个数,模p时和-1同余
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lrRVgGAj-1652270013643)(/Users/qinjianquan/Downloads/IMG_4D278C18C055-1.jpeg)]
重复调用上面的算法,当次数t足够大时,如果还是返回“不确定”,则我们有很大的把握认为非素奇数n为素数
2.6.2 一个确定性的素性判定算法
注意:Miller-Rabin算法判定一个数是不是素数时概率性结果,并不能完全保证。AKS是确定性算法
2.6.3 素数的分布
平均而言,n附近的素数分布情况为In(n),但是这只是平均情况,素数的准确分布并不确定
2.7 中国剩余定理
再研究??
某一范围内的整数可以通过它的剩余类来重构,这组剩余类数是对该整数用一组两两互素的整数取模得到的。用途在于它给出了一种方法使得模M的大数运算转化道相对较小的数的运算,M>=150时,该方法有效,但事先需要分解M
2.8 离散对数
离散对数是许多公钥算法的基础
2.8.1 模n的整数幂
欧拉定理:对于任意a和n互素,都有a^(?(n)) mod n 与 1 mod n 同余,即一定存在m = ?(n),使得前式成立,并且最小正幂m 为下列之一
- a (mod n) 的阶
- a所属的模n的整数
- a所产生的周期长
2.8.2 模算术对数
对于任何整数b和素数p的本源根a,有唯一的幂i使得b mod p 与 a^i mod p 同余。i称为以a为底(mod p)的b的离散对数,计作 dloga ,p^b
2.8.3 离散对数的计算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n1Z26vma-1652270013644)(/Users/qinjianquan/Downloads/IMG_7EC08FC6DFFC-1.jpeg)]
3 传统的加密技术
3.1 对称密码模型
对称密码方案的五个组成部分:
- 明文:输入
- 加密算法:对明文进行各种替代和变换
- 密钥:也是输入,独立于明文和算法
- 密文:输出
- 解密算法:加密算法逆运算,输出为原始明文
也就是说在实际操作中,我们只需要保密密钥就可以了,不必保密算法和保密密文
3.1.1 密码编码学
密码编码学系统三个特征:
- 转换明文为密文的运算类型
- 所用的密钥数:若接收方和发送方使用的是同一种密钥,则是对称密码,否则是非对称密码
- 处理明文的方法
3.1.2 密码分析学和穷举攻击
密码分析学:依赖于算法的特征、明文的特征和某些密文对
算法标准:
- 破译密码代价远大于密文信息的价值
- 破译密码的时间超出密文信息的有效生命周期
穷举攻击:针对密文,尝试所有密钥,将其转化为可读的有意义的明文,平均情况下,要尝试所有可能密钥的一半
3.2 替代技术
3.2.1 Caesar密码
在字母表中用它之后的第三个字母代替明文字母,密钥是25种
3.2.2 单表代替密码
置换:集合S中所有元素的有序排列,n个元素的集合有n!中置换。但是词频分析仍然能够攻陷
3.2.3 Playfair密码
字母对26*26个,但是词频分析只是稍微好一点
3.2.4 Hill密码
利用了矩阵的一些知识
3.2.5 多表代替算法
vigenere密码
3.2.6 一次一密
明文和密文等长,但太大了
3.3 置换技术
通过矩块进行多次置换
3.4 轮转机
可以实现多表替代算法
3.5 隐写术
就是隐藏明文,而密码学是通过技术来实现信息的不可阅读性
|