——————————————————————————————————密码学中一些常用的数学知识————————————————————————————————

·代数系统

代数系统是对要研究的现象或过程建立起的一种数学模型,模型中包括要处理的数学对象的集合以及集合上的关系或运算。

运算可以是一元的也可以是多元的,可以有一个也可以有多个。

 

·封闭性

image

 

·结合律

image

 

·半群

设<G,*>是一个代数系统,*满足:

<1>封闭性

<2>结合律

则称<G,*>是半群

 

·群

image

 

·有限群&无限群

如果G是有限集合,则称<G,*>是有限群,否则是无限群。有限群中,G的元素个数称为群的阶数

 

·Abel群(交换群)

image

 

群中运算*一般称为乘法,称该群为乘法群。若运算*改为+,则称为加法群

image

·循环群

image

 

·环

image

 

·域

image

 

·有限域

有限域是指域中元素个数有限的域,元素个数称为域的阶

 

·Galois域

image

·素数和互素数

 1.因子

设a,b(b!=0)是两个整数,如果存在另一整数m,使得a = mb,则称b整除a,记为b|a,且称b是a的因子。

2.素数

image

·整数分解的唯一性

image

image

 

 

3.互素数

 

·最大公因子

 

image

 

image

 

 

 

·同余,同余类

 

image

 

 

 

·费尔玛定理[Fermat定理]

 

image

 

·欧拉函数

 

image

 

 

image

 

·欧拉定理(Euler)

 

image

 

 

 

·欧几里得算法(Euclid)

 

1.求最大公因子

 

Euclid算法是基于下面一个基本结论:

 

image

 

2.求乘法逆元

 

image

#include<stdio.h>
int EX_Euclid(int a,int b){
    int temp,q;
    if(a < b){
        temp = a;
        a = b;
        b = temp;
    }
    int x[5],y[5],z[5];
    x[1] = 1;
    x[2] = 0;
    x[3] = a;
    y[1] = 0;
    y[2] = 1;
    y[3] = b;
    while((y[3] != 0) && y[3] != 1){
        q = x[3]/y[3];
        z[1] = x[1]-q*y[1];
        z[2] = x[2]-q*y[2];
        z[3] = x[3]-q*y[3];
        x[1] = y[1];
        x[2] = y[2];
        x[3] = y[3];
        y[1] = z[1];
        y[2] = z[2];
        y[3] = z[3]; 
    }
    if(y[3] == 0){
        printf("gcd(a,b) = %d,no inverse\n",x[3]);
        return 0;
    }
    if(y[3] == 1){
        if(y[2] < 0) y[2] += a; 
        printf("gcd(a,b) = %d,inverse = %d\n",y[3],y[2]);
        return 0;
    }
} 
    
int main(){
    int x,y;
    while(scanf("%d%d",&x,&y) != EOF){
        EX_Euclid(x,y);
    }    
    return 0;
}

 

Sample:

 

image

 

算法中的变量有以下关系:

 

image

 

Extended Euclid(a,b)中的X3,Y3与Euclid(a,b)中的X,Y作用相同,因此可正确产生gcd(f,d)

  

·中国剩余定理

 

中国剩余定理是数论中最有用的一个工具,定理说如果已知某个数关于一些两两互素的数的同余类集,就可重构这个数

 

利用中国剩余定理还可将大数用小数表示,大数的运算通过小数实现

 

image

 

中国剩余定理提供了一个非常有用的特性:

 

image

 

e.g.

 

image

 

 

·离散对数

1.求模下的整数幂

image

定理:

image

 

·平方剩余

image

 

·Lengendre符号

image

image

Legendre符号有以下性质:

image