1、数论基础,4.1 数论简介习题,4.1.1 素数和互素数1. 因子设a,b(b0)是两个整数,如果存在另一整数m,使得a=mb,则称b整除a,记为b|a,且称b是a的因子。,4.1 数论简介,数论是密码学特别是公钥密码学的基本工具,本章首先介绍密码学中常用的一些数论知识,然后介绍公钥密码体制的基本概念和几种重要算法。,整数具有以下性质: a|1,那么a=1。 a|b且b|a,则a=b。 对任一b (b0),b|0。 b|g,b|h,则对任意整数m、n有b|(mg+nh)。这里只给出的证明,其他3个性质的证明都很简单。性质的证明: 由b|g,b|h知,存在整数g1、h1,使得g=bg1,h=bh
2、1所以mg+nh=mbg1+nbh1=b(mg1+nh1),因此b|(mg+nh)。,2. 素数称整数p(p1)是素数,如果p的因子只有1,p。任一整数a(a1)都能惟一地分解为以下形式: 其中p1p2pt是素数,ai0(i=1,t)。例如91=711,11011=711213,这一性质称为整数分解的惟一性,也可如下陈述: 设P是所有素数集合,则任意整数a (a1)都能惟一地写成以下形式:其中ap0,等号右边的乘积项取所有的素数,然而大多指数项ap为0。相应地,任一正整数也可由非0指数列表表示。例如: 11011可表示为a7=1,a11=2,a13=1。两数相乘等价于对应的指数相加,即由k=m
3、n 可得:对每一素数p,kp=mp+np。而由a|b可得: 对每一素数p,apbp。这是因为pk只能被pj(jk)整除。,3. 互素数称c是两个整数a、b的最大公因子,如果 c是a的因子也是b 的因子,即c是a、b的公因子。 a和b的任一公因子,也是c的因子。表示为c=gcd(a, b)。由于确定大数的素因子不很容易,所以这种方法不能直接用于求两个大数的最大公因子,如何求两个大数的最大公因子在下面介绍。如果gcd(a,b)=1,则称a和b互素。,由于要求最大公因子为正,所以gcd(a,b)=gcd(a,-b)=gcd(-a,b)=gcd(-a,-b)。一般gcd(a,b)=gcd(|a|,|b
4、|)。由任一非0整数能整除0,可得gcd(a,0)=|a|。如果将a,b都表示为素数的乘积,则gcd(a, b)极易确定。例如:300=22315218=2132gcd(18,300)=213150=6一般由c=gcd(a,b)可得: 对每一素数p,cp=min(ap,bp)。,设n是一正整数,a是整数,如果用n除a,得商为q,余数为r,则a=qn+r,0rn, 其中x为小于或等于x的最大整数。用a mod n表示余数r,则 。如果(a mod n)=(b mod n),则称两整数a和b模n同余,记为ab mod n。称与a模n同余的数的全体为a的同余类,记为a,称a为这个同余类的表示元素。注
5、意: 如果a0(mod n),则n|a。,4.1.2 模运算,同余有以下性质: 若n|(a-b),则ab mod n。 (a mod n)(b mod n),则ab mod n。 ab mod n,则ba mod n。 ab mod n,bc mod n,则ac mod n。从以上性质易知,同余类中的每一元素都可作为这个同余类的表示元素。,求余数运算(简称求余运算)a mod n将整数a映射到集合0,1, ,n-1,称求余运算在这个集合上的算术运算为模运算,模运算有以下性质: (a mod n)+(b mod n) mod n=(a+b) mod n。 (a mod n)-(b mod n)
6、mod n=(a-b) mod n。 (a mod n)(b mod n) mod n=(ab) mod n。,性质的证明: 设(a mod n)=ra,(b mod n)=rb,则存在整数j、k使得a=jn+ra,b=kn+rb。因此(a+b) mod n=(j+k)n+ra+rb mod n=(ra+rb) mod n= (a mod n)+(b mod n) mod n (证毕)性质、的证明类似。,例4.1 设Z8=0,1,7,考虑Z8上的模加法和模乘法,结果如表4.1所示。(见77页表4.1)从加法结果可见,对每一x,都有一y,使得x+y0 mod 8。如对2,有6,使得2+60 mo
7、d 8,称y为x的负数,也称为加法逆元。对x,若有y,使得xy1 mod 8,如331 mod 8,则称y为x的倒数,也称为乘法逆元。本例可见并非每一x都有乘法逆元。,一般地,定义Zn为小于n的所有非负整数集合,即Zn=0,1, ,n-1,称Zn为模n的同余类集合。其上的模运算有以下性质: 交换律 (w+x) mod n=(x+w) mod n(wx) mod n=(xw) mod n 结合律 (w+x)+y mod n=w+(x+y) mod n(wx)y mod n=w(xy) mod n 分配律 w(x+y) mod n=wx+wy mod n 单位元 (0+w) mod n=w mod
8、 n(1w) mod n=w mod n 加法逆元 对wZn,存在zZn,使得w+z0 mod n,记z=-w。,此外还有以下性质: 如果(a+b)(a+c) mod n,则bc mod n,称为加法的可约律。该性质可由(a+b)(a+c) mod n的两边同加上a的加法逆元得到。,然而类似性质对乘法却不一定成立。例如63672 mod 8,但37 mod 8。原因是6乘以0到7得到的8个数仅为Z8的一部分,见例4.1。即如果将对Z8作6的乘法6Z8(即用6乘Z8中每一数)看作Z8到Z8的映射的话,Z8中至少有两个数映射到同一数,因此该映射为多到一的,所以对6来说,没有惟一的乘法逆元。但对5来
9、说,551 mod 8,因此5有乘法逆元5。仔细观察可见,与8互素的几个数1,3,5,7都有乘法逆元。这一结论可推广到任一Zn。,定理4.1 设aZn,gcd(a, n)=1,则a在Zn中有乘法逆元。证明: 首先证明a与Zn中任意两个不相同的数b、c(不妨设cb)相乘,其结果必然不同。否则设abac mod n,则存在两个整数k1,k2,使得ab=k1n+r,ac=k2n+r,可得a(b-c)=(k1-k2)n,所以a是(k1-k2)n的一个因子。又由gcd(a,n)=1,得a是k1-k2的一个因子,设k1-k2=k3a,所以a(b-c)=k3an,即b-c=k3n,与0cbn矛盾。所以|aZ
10、n|=|Zn|,又知aZnZn,所以aZn=Zn。因此对1Zn,存在xZn,使得ax1 mod n,即x是a的乘法逆元。记为x=a-1。 (证毕),设p为一素数,则Zp中每一非0元素都与p互素,因此有乘法逆元。类似于加法可约律,可有以下乘法可约律: 如果(ab)(ac) mod n且a有乘法逆元,那么对(ab)(ac) mod n两边同乘以a-1,即得bc mod n,费尔玛 (Fermat) 定理和欧拉 (Euler) 定理在公钥密码体制中起着重要作用。1. 费尔玛定理定理4.2 (Fermat)若p是素数,a是正整数且gcd(a, p)=1,则ap-11 mod p。证明:由4.1.2的讨
11、论知当gcd(a, p)=1时,aZp=Zp,其中aZp表示a与Zp中每一元素做模p乘法。又知a00 mod p,所以aZp-0=Zp-0,a(Zp-0)=Zp-0。即a mod p,2a mod p,(p-1)a mod p=1,2,p-1,4.1.3 费尔玛定理和欧拉定理,所以 a2a(p-1)a(a mod p)(2a mod p)(p-1)a mod p) mod p(p-1)! mod p另一方面a2a(p-1)a=(p-1)!ap-1因此(p-1)!ap-1(p-1)! mod p由于(p-1)!与p互素,因此(p-1)!有乘法逆元,由乘法可约律得ap-11 mod p。 (证毕)
12、,Fermat定理也可写成如下形式: 设p是素数,a是任一正整数,则apa mod p。2. 欧拉函数设n是一正整数,小于n且与n互素的正整数的个数称为n的欧拉函数,记为(n)。例如: (6)=2 ,(7)=6 ,(8)=4。若n是素数,则显然有(n)=n-1。例如: 由21=37,得(21)=(3)(7)=26=12。,定理4.3 若n是两个素数p和q的乘积,则(n)=(p)(q)=(p-1)(q-1)。证明:考虑Zn=0,1,pq-1,其中不与n互素的数有3类,A=p,2p,(q-1)p,B=q,2q,(p-1)q,C=0,且AB=,否则ip=jq,其中1iq-1,1jp-1,则p是jq的
13、因子,因此是j的因子,设j=kp,k1。则ip=kpq,i=kq,与1iq-1矛盾。所以(n)=|Zn|-|A|+|B|+|C|=pq-(q-1)+(p-1)+1 =(p-1)(q-1)=(p)(q) (证毕),3. 欧拉定理定理4.4(Euler) 若a和n互素,则a(n)1 mod n。证明: 设R=x1,x2,x(n)是由小于n且与n互素的全体数构成的集合,aR=ax1 mod n,ax2 mod n,ax(n) mod n,对aR中任一元素axi mod n,因a与n互素,x1与n互素,所以axi与n互素,且axi mod nd。Euclid(f, d)1. Xf; Yd;2. if
14、Y=0 then return X=gcd(f,d);3. R=X mod Y;4. X=Y;5. Y=R;6. goto 2。,例4.2 求gcd(1970, 1066)。1970=11066+904,gcd(1066, 904)1066=1904+162,gcd(904, 162)904=5162+94,gcd(162, 94) 162=194+68,gcd(94, 68) 94=168+26,gcd(68, 26)68=226+16,gcd(26, 16) 26=116+10,gcd(16, 10) 16=110+6,gcd(10, 6) 10=16+4,gcd(6, 4)6=14+2,
15、gcd(4, 2) 4=22+0,gcd(2, 0)因此gcd(1970, 1066)=2。,中国剩余定理是数论中最有用的一个工具,定理说如果已知某个数关于一些两两互素的数的同余类集,就可重构这个数。例如:Z10中每个数都可从这个数关于2和5(10的两个互素的因子)的同余类重构。比如已知x关于2和5的同余类分别是0和3,即x mod 20,x mod 53。可知是偶数且被5除后余数是3,所以可得8是满足这一关系的惟一的x。,4.1.6 中国剩余定理,定理4.5(中国剩余定理) 设m1,m2,mk是两两互素的正整数, ,则一次同余方程组对模M有惟一解:其中ei满足,证明:设 ,i=1,2,k,由
16、Mi的定义得Mi与mi是互素的,可知Mi在模mi下有惟一的乘法逆元,即满足 的ei是惟一的。,下面证明对i1,2,k,上述x满足ai(mod mi)x。注意到当ji时,mi|Mj,即Mj0(mod mi)。所以(Mjej mod mj) mod mi (Mj mod mi)(ej mod mj) mod mi) mod mi 0而(Mi(ei mod mi) mod mi(Miei) mod mi1所以x(mod mi)ai,即ai(mod mi)x,下面证明方程组的解是惟一的。设x是方程组的另一解,即xai(mod mi)(i=1,2,k)由xai(mod mi)得x-x0(mod mi),
17、即mi|(x-x)。再根据mi两两互素,有M|(x-x),即x-x0(mod M),所以x(mod M)=x(mod M)。(证毕)中国剩余定理提供了一个非常有用的特性,即在模M下可将非常大的数x由一组小数(a1,a2,ak)表达。,例4.4 由以下方程组求x。解: M=2357=210,M1=105,M2=70,M3=42,M4=30,易求e1M-11 mod 21,e2M-12mod 31,e3M-13 mod 53,e4M-14 mod 74,所以x mod 210(10511+7012+4233+3045) mod 210173,或写成x173 mod 210。,例4.5 将973 mod 1813由模数分别为37和49的两个数表示。解: 取x=973, M=1813, m1=37,m2=49。由a1973 mod m111,a2973 mod m342得x在模37和模49下的表达为(11,42)。,