码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈密码学中数论基础

时间:2019-09-23 09:47:26      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:问题   math   16px   欧拉   span   hellip   一个   欧几里得   数学   

1.模运算(mod)

模运算也可以称为取余运算,例如 23≡11(mod12),因此如果a=kn+b,也可以表示为a ≡ b(mod n),运算规则:

(a+b) mod n = ((a mod n) + (b mod n))mod n

  (a*b) mod n = ((a mod n) * (b mod n)) mod n

  • 完全剩余集合

1~n-1构成了自然数n的完全剩余集合,对于任意一个整数m%n都存在于1~n的集合中

  • 构造加法链

   在加密算法中,运用到了大量的取模运算,对于一个k位数模n,所有的运算例如加减乘除中间结构将不会超过2k位,因此例如ax mod n将会大大简化计算时的复杂度。

例如a8 mod n 在计算时可以这样计算 ((a2 mod n)2 mod n)2 mod n

当指数x不是2的倍数时则需要构造加法链,例如25,25 = 16 + 8 +1 = 24 + 23 + 20

因此a25 mod n = (a * a8 * a16 ) mod n = ((((a* a)2)2)2*a)mod n

C语言表示

unsigned long ss(unsigned long x , unsigned long y , unsigned long n) {
unsigned long s,t,u;
int i ;
s = 1; t =x ; u=y;
while(u){
if(u&1) s = (s*t)&n;
u>>=1;
t = (t*t) % n ;
}
return (s);
}
  • 素数

最大公因数(gcd)

gcd(4,2)=2 gcd(4,3)=1 gcd(6,4)=2

c语言:

int gcd(int x,int y){
int m;
while(x>0){
m = x;
x = x%y;
y = m;
} 
return m
  • 模逆元

逆元:

方程 技术图片 的解称为 技术图片 关于模 技术图片 的逆,当 技术图片(即 技术图片技术图片 互质)时,方程有唯一解,否则无解。

那么逆元可以用来干什么呢,比如说对于 技术图片,并没有 技术图片,但是直接除又会爆精度,这时我们就可以用到逆元,假设用 技术图片 代表 技术图片技术图片 的逆元,那么 技术图片

模逆元:

4 * x ≡ 1(mod 7),即 4x = 7k + 1

更常见的问题是:1 = (a * x) mod n 也可以写作 a-1≡ x (mod n)

因此这里存在一个解集的问题:

当gcd(a,n) = 1 , a-1 ≡ x (mod n) 存在唯一解

当gcd(a,n) ≠ 1 a-1 ≡ x (mod n) 无解

如何找出a%n  的逆元,利用拓展欧几里得算法

 

void e_gcd(int a, int b, int &gcd, int &x, int &y)
{
    if (b == 0)
    {
        x = 1;
        y = 0;
        gcd = a;
    }
    else
    {
        e_gcd(b, a % b, gcd, y, x);
        y -= x * (a / b)
    }
}

 

  • 费马小定理

       这个定理在初中数学联赛中经常会遇到,貌似之前看过高中联赛也有过,只不过CMO作为了基础写了一下。

内容:如果m是一个素数,且a不是m的倍数,那么根据定理存在 a m-11(mod m)

  • 欧拉函数

      欧拉函数:φ(n)表示从1~n-1中有多少个数与n互为质数。 φ(1) = 1,通项公式:φ(n)=n*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn)

其中 p1~pn为n的质因数。

在一些加密算法中,产生秘钥的过程即计算欧拉函数的过程。

  • 有限域上的离散对数

模指数是频繁运用于密码学中的另一种单向函数

例如:3x15 mod 17  , x = 6

不是所有的离散对数都有相应解 例如  3 x 7 mod 13 没有整数x可以符合这个公式,因此这个离散对数无解。有限域上的离散对数存在于两种情况中:

1.质数域中的乘法群

2.有限域中的椭圆曲线群

浅谈密码学中数论基础

标签:问题   math   16px   欧拉   span   hellip   一个   欧几里得   数学   

原文地址:https://www.cnblogs.com/sylover/p/11570254.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!