对称密码 之 整除与欧几里得算法

数论简介

该部分简单介绍数论基础,包括整除性欧几里得(Euclid)算法模算术

1.整除性和除法

  • 1.1 整除性

设a,b,m是整数,若a=mb,我们说非零整数b整除a,用b|a表示。
a是被除数,b是除数。
//摘自《密码编码学与网络安全》

我还以为整除性是什么高深的东西,其实就是小学里的整除而已,除完没余数。

性质:
a) 如果a|1,则a = 1/-1;
b) 如果a|b且b|a,则 a = b/-b;
c) 任意非零数b整除0;
d) 若a|b且b|c,则a|c;
e) 若b|g且b|h,则对任意整数m,n有b|(mg+nh);
f) 若b|g,则存在某个整数g1,使得g可写为g = bg1;

  • 1.2 除法

给定任意正整数n和任意非负整数a,若用n除a,我们得到一个整数商q和一个整数余数r,他们服从下面关系:
a = qn + r (0<= r < n; q = 取下整(a/n))
//摘自《密码编码学与网络安全》

我又以为除法是什么高深的东西,其实就是小学里的除法而已。

2.欧几里得(Euclid)算法

欧几里得(Euclid)算法是求两个正整数最大共因子的简单过程。
//摘自《密码编码学与网络安全》

  • 最大共因子

    称c为a,b的最大共因子,若:
    1)c是a,b的因子;
    2)a,b的任何因子都是c的因子;
    记作c = gcd(a,b)。
    简单来说:能够同时整除a,b的最大整数。
    //摘自《密码编码学与网络安全》

    a,b互素:a,b的唯一正共因子为1。

  • 求最大共因子
    数据结构学过辗转相除法,这地方讲了个欧几里得算法,我们来看看。
    啊~看完之后才明白,欧几里得算法就是辗转相除算法,这里只不过是将其正确性做了一个证明:
    这里写图片描述
    这里写图片描述

3.模运算
- 定义:略。
- 性质:略。
- 模运算:略。
- 模运算性质:略。

4.修改的欧几里得算法

Euclid(a, b)
    if b = 0 then 
        return a;
    else 
        return Euclid(b, a mod b);

区别:欧几里得算法循环使用除法运算思想,修改的欧几里得算法循环使用取模运算思想。

5.扩展的欧几里得算法

ax + by = d = gcd(a, b);
性质:ax + by 的最小正整数等于gcd(a, b)。

e_gcd(a, b, x, y)   
    if( b == 0 ) then
        x = 1;
        y = 0;
        return a;
    end if

    ans = e_gcd(b, a mod b, x, y);
    temp = x;
    x = y;
    y = temp - a/b*y;
    return ans;
end

详细推到移步大神博客: 扩展欧几里得算法详解


该部分对除法,模,最大共因子等进行简介,都是极为基础的数学知识点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值