• 密码学基础知识-数论(从入门到放弃)


    数论知识

    本文主要介绍整除、质数和合数、同余定理、模逆元素、欧几里得除法、欧拉函数、欧拉定理、费马小定理、中国剩余定理(孙子定理)。



    简介

    最近学习了公钥算法,涉及了一些数论中的知识。对一些数论的基础知识做一下总结。

    • gcd是最大公约数。
    • lcm是最小公倍数。

    一、整除

    a,b是任意的两个整数,b不为0,存在整数q,使得a=qb。记作:b|a

    二、质数和合数

    除了平凡约数±1和±n之外,n没有其他的因数。则n是质数(质数又称为素数),否则是合数。例如(3、7、11、13都是素数)

    • 1既不是素数也不是合数。
    • 两个数互质:没有除1以外的公因子。如果a与n的最大公因子为1,可写成gcd(a,n)=1。
    • 素数有无穷多个

    素数在密码学中的地位还是非常高的。


    三、同余定理

    • 给定一个正整数,a,b是两个整数,m|a-b,则a、b模m同余,记作a≡b(mod n)。

    • 定理:设m是一个正整数,a,b是两个正整数,则a≡b(modm)的充要条件是存在一个整数k,使得a=b+km。

    • 对于正整数n,整数a1 , a2, b1, b2,如果
      a1≡a2 (mod n). b1≡b2 (mod n)
      则我们可以得到如下性质:
      a1+b1= a2+ b2 (mod n)
      a1·b1= a2·b2 (mod n)

    模逆元素

    对整数 a 和正整数 n,a 对模数 n 的模逆元素是指满足以下条件的整数 b。
    ab≡1(mod n)

    a对模数 n 的模逆元素不一定存在,a 对 模数 n 的模逆元素存在的充分必要条件是 a 和 n 互质


    四、Euclid(欧几里得)除法

    a,b是两个整数,b>0。存在唯一的q、r使得:a=qb+r。可以用欧几里得算法(又称为辗转相除法)求两个数的最大公因子。

    可以利用辗转相除法求最大公因子

    gcd(a,b)=gcd(a−b,b)

    eg:gcd(4864,3458)=38
    4864 = 3458+1406
    3458 = 21406+646
    1406 = 2
    646+114
    646 = 5114+76
    114 = 1
    76+38
    76 = 2*38

    如果用绝对值最小余数代替最小非负余数。运算的次数可能会减少,从而可以减少计算的时间。

    六、欧拉(Euler)函数

    设n是一个正整数,则n个整数0,1,…,m-1中与m互素的整数的个数,记作Φ(n)
    eg:Φ(2)=1;Φ(1)=1

    • 若p是素数则 Φ( p )=p-1
    • 若p和q是不同的素数,则Φ( p*q )=(p-1)(q-1)=Φ( p )Φ( q )

    欧拉定理

    对于每个互质的a与n,即gcd(a,n)=1,可以得到:a^Φ(n) ≡1(mod)n

    七、费马小定理

    如果p是一个质数,而整数a不是p的倍数(即gcd(a,p)=1),则有a^(p-1)≡1(mod p)或者a^ϕ(m)≡ 1 mod (m)。
    费马小定理是欧拉定理的特殊情况

    八、中国剩余定理CRT

    最早见于《孙子算经》(中国南北朝数学著作,公元420-589年),叫物不知数问题,也叫韩信点兵问题。又称孙子定理。

    今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?

    其实是求解一个一次同余方程组
    在这里插入图片描述
    求解的过程可以参考以下链接: 中国剩余定理(CRT )
    作者写的非常的简单通俗易懂。
    中国剩余定理

    总结

    对于这部分的学习,作者也只是简单的入门,里面涉及到的知识点非常的基础。推荐一个好用的工具:sagemath。

    参考文章: 密码学基础1:RSA算法原理全面解析
    中国剩余定理(CRT )

  • 相关阅读:
    软件测试逻辑覆盖相关理解
    1572.矩阵对角线元素的和
    根据最新上传的压缩包,解压写入数据库
    Hyerf 初体验
    如何获取大数据平台 CDH 中 hive metastore db 的用户名和密码?
    STM32的外部SRAM
    处理非线性分类的 SVM一种新方法(Matlab代码实现)
    【NestJS系列】核心概念:Controller控制器
    如何在服务器中创建python虚拟环境
    字节(byte)和位(bit)
  • 原文地址:https://blog.csdn.net/qq_43589852/article/details/127411431