数论(算法概述)

1. 模运算

模运算很有用, 最常用的是钟表.
还有二进制负数的补码, 有2n 个数, [-2n-1 , 2n-1 -1]

正数当然直接表示成2进制即可, 对于负数就需要用补码, 即[1, 2n-1 ] 的二进制表示的取反再加一.

以前对这个补码不理解, 所以也一直记不住, 其实:

Any number in the range -2n-1 to 2n-1 - 1 is stored modulo 2n. Negative numbers -x therefore end up as 2n -x.

原来如此.

模运算对于加,减,乘,指数运算, 都很容易理解, 也都可以先进行模运算再加减乘. 就是除比较复杂, 后面会谈到.

2. 最大公约数-euclid算法

Euclid's rule: If x and y are positive integers with x >= y, then gcd(x, y) = gcd(x mod y, y)

对于这个的证明, 用反证显而易见.

我们还可以得到以下定理:

Lemma: If a > b, then a mod b < a/2.

这个的证明分为两种情况b>a/2, b<a/2, 当b>a/2的时候, a mod b < a/2是显然的.

当b<a/2的时候, a mod b < b < a/2. 所以得证.

有了这个定理, 我们可以知道euclid算法每次递归都会做x mod y, 因为x mod y < x/2, 所以每次递归x的位数都会减1(2进制).

所以euclid的算法最多需要递归len(x)+len(y), 即2n次

而每次递归都要做个除法算x mod y, 这个是O(n2 ), 所以算最大公约数是O(n3 )的.

3. 扩展euclid算法

由上面的算法我们可以算出两个数的最大公约数, 但是如果给出d是最大公约数, 怎么验证呢.

Lemma: If d divides both a and b, and d = ax + by for some integers x and y, then necessarily
d = gcd(a, b).

证明: 首先d<= gcd(a, b)的, 这个显然. 而d = ax + by, ax + by是可以整除gcd(a,b)的, 所以d也可以整除gcd(a,b), 即d>=gcd(a,b). 得证.

扩展euclid算法就是可以证明在用euclid算法算最大公约数的时候可以一起算出x, y. 所以x, y是一定存在, 且可以找出的.

4. 模除法

4/3 mod N 这个应该怎么算

4* 1/3 mod N, 4 mod N是没有问题的, 那么1/3 mod N应该怎么算了, 这个确实看上去没法算.

3* 1/3 = 1 (mod N), 把1/3换成x, 3x = 1 (mod N), 而 x = 1/3 (mod N), 所以我们只需求出x的整数解.

We say x is the multiplicative inverse(乘法逆元素) of a modulo N if ax = 1 (mod N).

而这个x是否能解出是有条件的, 比如2x = 1 (mod 6)就无解.

Modular division theorem: For any a mod N, a has a multiplicative inverse modulo N if and only if it is relatively prime to N.

即当a和N互质的时候, 这个x是有解的.

ax + Ny = 1 (互质, 所以最大公约数为1), 两边mod N

ax = 1 mod N, 而这个x是可以通过扩展euclid算法求出的, 所以复杂度也是O(n3 )的.

且x有解时, a和N一定互质

ax mod N = ax - KN = 1, 两边除gcd(a, N)

而ax-KN/gcd(a,N)一定是个整数, 所以1/gcd(a,N)也一定是个整数, 所以gcd(a, N)只能为1.

5. 质性判定

给一个整数怎么判断是否是质数? 费马小定理

Fermat's little theorem If p is prime, then for every 1 <= a < p,
ap-1 = 1 (mod p):

证明: 我们可证(p-1)!*ap-1 = (p-1)! (mod p) 是成立的. 对p取模, 余数的可能性为[1,p-1]

S = {1, 2, ... , p-1} = {a * 1 mod p, a * 2 mod p, ..., a * (p - 1) mod p} 可证这两个集合是一样的

由于P是质数, p和[1,p-1]中的数都互质, 所以上面的式子两边都除(p-1)!, 得证.

但费马小定理只能保证质数都满足这个条件, 但不能保证满足条件的都是质数.

如341 = 11* 31 is not prime, 但它就满足费马小定理

不过这种例子很少见, 称为Carmichael numbers

而且对于合数, 即不满足费马小定理的数, 可以证明至少有一半以上的a值不满足.

Lemma: If aN-1 != 1 mod N for some a relatively prime to N, then it must hold for at least
half the choices of a < N.

所以判断一个数是否为质数, 只需多随机抽取k个a, 来判断是否满足ap-1 = 1 (mod p), 错判的概率为1/2k , k足够大时, 正确的概率很大.

而要随机生成大质数, 方法也很简单.

Lagrange's prime number theorem:  the number of primes <= x 无限接近 x/(ln x).

也就是说质数是很多的, 于是找质数就是随机生成一个规定长度的整数, 然后判断是否为质, 不是继续找.

6. 公钥加密 RSA

Property: Pick any two primes p and q and let N = pq. For any e relatively prime to (p -1)(q - 1):

1. The mapping x -> xe mod N is a bijection on {0, 1, ... ,N-1}.

2. Moreover, the inverse mapping is easily realized:

let d be the inverse of e modulo (p -1)(q -1). Then for all x {0,...,N- 1},
(xe )d   =  x mod N:

找两个大质数p, q, 然后N = pq, 找一个e与 (p -1)(q -1)互质.

加密的时候用xe mod N得到x的密文, 所以e, N为公钥, 公开的

d为私钥, ed = 1 mod(p -1)(q -1), 因为e与 (p -1)(q -1)互质, 所以d必有解.

解密的时候用(xe )d mod N 来得到原文x.

RSA就是机遇大数分解非常的难, 所以你知道N, 但是无法短时间内知道p, q, 即得不到d.

证明(xe )d   =  x mod N:

ed = 1 mod(p -1)(q -1), 即 ed = 1+k(p -1)(q -1)

(xe )d = x1+k(p -1)(q -1)

由于p,q都是质数, 所以xp-1 = 1 (mod p)

x1+k(p -1)(q -1) - x 可以被p整除, 同样可证可被q整除, 由于p,q都是质数, 所以也可以被N = pq 整除

即(xe )d - x =0 mod N

所以得证.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容简介: 本书论述了算法数论的基本内容,其中包括:连分数、代数数域、椭圆曲线、素性检验、大整数因子分解算法、椭圆曲线上的离散对数、超椭圆曲线。本书的特点是内容涉及面广,在有限的篇幅内,包含了必要的预备知识和数学证明,尽可能形成一个完整的体系。并且本书的部分内容曾多次在中国科学院研究生院信息安全国家重点实验室和广州大学作为硕士研究生教材使用。本书可作为信息安全、数论等专业的研究生教材及相关专业的研究人员、高等学校的教师和高年级学生的参考。 目录: 序 前言 第一章 整数的因子分解 1.1 唯一分解定理 1.2 辗转相除法(欧氏除法) 1.3 Mersenne素数和Fermat素数 1.4 整系数多项式 1.5 环Z和Z[ω] 习题一 第二章 同余式 2.1 孙子定理 2.2 剩余类环 2.3 Euler函数ρ(m) 2.4 同余方程 2.5 原根 2.6 缩系的构造 习题二 第三章 二次剩余 3.1 定义及Euler判别条件 3.2 Legendre符号 3.3 Jacobi符号 习题三 第四章 特征 4.1 剩余系的表示 4.2 特征 4.3 原特征 4.4 特征和 4.5 Gauss和 习题四 第五章 连分数 5.1 简单连分数 5.2 用连分数表实数 5.3 最佳渐近分数 5.4 Legendre判别条件 习题五 第六章 代数数域 6.1 代数整数 6.2 Dedekind整环 6.3 阶的一些性质 第七章 椭圆曲线 7.1 椭圆曲线的群结构 7.2 除子类群 7.3 同种映射 7.4 Tate模和Weil对 7.5 有限域上的椭圆曲线 习题七 第八章 在密码学中的一些应用 8.1 RSA公钥密码 8.2 Uiffie-Hellman体制 8.3 ElGamal算法 8.4 基于背包问题的公钥密码 8.5 秘密共享 第九章 素性检验 9.1 Fermat小定理及伪素数 9.2 强伪素数及Miller-Rabin检验 9.3 利用n-1的因子分解的素性检验 9.4 利用n+1的因子分解的素性检验 9.5 分圆环素性检验 9.6 基于椭圆曲线的素性检验 第十章 大整数因子分解算法 10.1 连分数因子分解算法 10.2 二次筛法 10.3 Pollard的P-1因子分解算法 10.4 椭圆曲线因子分解算法 10.5 数域筛法 习题十 第十一章 椭圆曲线上的离散对数 11.1 椭圆曲线公钥密码 11.2 小步-大步法 11.3 家袋鼠和野袋鼠 11.4 MOV约化 11.5 FR约化 11.6 SSSA约化 11.7 有限域上离散对数的计算 第十二章 超椭圆曲线 12.1 超椭圆曲线的Jacobian 12.2 虚二次代数函数域 12.3 基于超椭圆曲线的公钥密码 附录 一些常用算法 A.1 不可约多项式的判别 A.2 有限域中平方根的求解 A.3 有限域上的分解 A.4 Hensel引理 A.5 格 A.6 Z[x]中多项式的分解 参考文献 免责申明:此书是我在网络上获取的,希望对大家有用。资源版权归作者及其公司所有,如果你喜欢,请购买正版。~~~

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值