密码学与网络安全(五)离散复习与模运算

Oct 16, 2017


原创:岐山凤鸣

引用需注明本站域名。

群、环、域

群G, {G,·}

  • 满足公理:
    • 封闭性
    • 结合律
    • 单位元
    • 逆元
  • 有限群,无限群,群的阶即G中元素的数量
  • 交换群,满足交换律
  • 循环群,G = {a^k}, a是生成元

环R,{R,+,*}

  • 满足公理:
    • *满足交换群
    • +满足半群
    • *对+满足分配率
    • 无零因子:如果R中有a和b满足ab=0,则a=0且b=0

域F,{F,+,*}

  • 满足公理:
    • F是一个整环
    • 乘法逆元
    • 就是一个集合,在其上进行加减乘除不脱离该集合

模算数运算

因子

  • 如果a=mb即b|a
  • 以下关系成立:
    • 如果a|1,则a=+-1
    • 如果a b,则a=+-b
    • 如果b g,且b h,则b (mg + nh)

同余

  • a mod n = b mod n,则a和b模n同余
  • 同余是一种等价关系,满足自反,对称,可传递

加法逆元和乘法逆元

  • 对每一个w,存在一个z能够让(w+z) mod n = 0,则z是加法逆元
  • 同上,如果wz mod n = 1,注意不是0,则z是乘法逆元

欧几里得算法

gcd(a, b) = gcd(b, a%b)

辗转相除直到第一个参数能够整除第二个参数即可

这里不多赘述

有限域GF

有限域的阶(元素个数)必须是一个素数的幂p^n

两种特殊情况:GF(p), GF(2^n)

最简单的有限域:GF(2)

+ 0 1   x 0 1   w -w w^-1
0 0 1   0 0 0   0 0  
1 1 0   1 0 1   1 1  1

阶为p的有限域GF(p):

{0, 1, 2, 3, …., p - 1}

因为w与p互素,如果用w乘域中所有的数mod p得到的余数将会以不同的次序涵盖域中的所有数,即余数集合是{0, 1, …, p-1}的置换型

举个栗子:

p是11,w是9,GF(11)是{1, 2, …, 10}

置换后:

{9, 7, 5, 3, 1, 10, 8, 6, 4, 2}是原来的域的置换型

计算乘法逆元,扩展欧几里得算法

计算乘法逆元表示为:ax mod n = 1, 已知a,求x

引理:如果gcd(a, n) = 1,对每个i, j, 有i < j < n,则ai mod n 不会等于 aj mod n

定理:如果gcd(a, n) = 1, 一定存在整数x,满足ax mod n = 1,可以用扩展欧几里得算法求逆

ax + by = d = gcd(a, b)
如果gcd(a, b) = 1,则有ax + by = 1
将 1 mod a = 1 mod a的1用上式进行替换
    ( (ax mod a) + (by mod a) mod a) = 1 mod a
ax mod a = 0,所以:
    (by mod a) mod a = 1 mod a,所以:
    by mod a = 1
如果by mod a = 1,则y = b^-1

线性O(n)内求逆元代码:

for(int i = 2; i < MAXN; ++i){
    inv[i] = mul(inv[mod%i], mod - mod / i, mod);
}