网站大量收购独家精品文档,联系QQ:2885784924

高级密码与学数论初步 .ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
高级密码与学数论初步

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 定理2.3 当p、q为素数时,对 ,有 证 考虑n的完全剩余系 ,除p-1个元素 和q-1个元素 以及0除外,其余所有元素都与n互素,因此有 下面我们将举一个例子对此定理的理解。 例2.7求 解 ,3和5皆为素数,有定理2.3得: 15的缩剩余系确有8个元素,它们是1,2,4,7,8,11,13,14 定理2.4 对任意整数n,若其标准分解式为 则其Euler函数为: 例2.8求 所以24的剩余系包含8个元素。它们是1,3,7,11,13,17,19,23。 定理 2.5 (Euler定理 )对任意整数k和n,若(k,n)=1,则 证 若 为模n的一个缩剩余系,则 即: 约简之后,得 当n为素数时, ,所以Euler定理也可以用来对 来对素数检测。若对任意 有 例2.9 K=3,n=10,?(10)=4,所以 34=81≡1 (mod10); k=2,n=11,?(11)=10,所以 210=1024≡1 (mod11) 定理2.5 (Fermat定理)设P为素数,则对任意整数a,有 证 由于p是素数,显然有 。于是,当 时,由Euler定理,有: 在 时, 由于p为素数,必有 ,定理显然成立。 例2.10 若p=5,a=3,所以有 35=243≡3 (mod5) 若p=5,a=10,所以有 105=100000≡10 (mod5)≡0 (mod5) Fermat定理和Euler给出了方程 的解为 若n为素数,可进一步简化上式为 例: 解: 得: 下面验算之 我们很容易进一步扩充此算法,以求解一般一次同余方程 若gcd(a,n)=1, 方法 第一步:求 ax ≡1 ( modn) 可得 第二步:求ax ≡b (modn) 由 可得 所以方程的解为 定理2.7 (孙子定理,又称为中国剩余定理) 令 nk=d1d2….dk,且d1,d2,….,dk两两互素 则方程组 x ≡x1 (modd1) x ≡x2 (modd2) ………….. x ≡xk (moddk) 在(0,n-1)内有惟一解。 证 对任意 i=1,2,…k,有 为了便于理解我们将上式写成 所以存在yi满足: 令: 又令: 即 我们注意到dj是nk/di的因子 对于i≠j 所以x是方程组 的解 现在我们来证明,它也是方程组在(0,n-1)内的唯一解。 设x是方程组的第一个方程的解,所以可得 将它代入 得: 由于gcd 故由定理2.2知,以上方程中的k1对d2 是唯一的解 于是满足第一、二个方程的x对模d1、d2也是惟一的解 设 将它代入第三个方程,仿照以上证明,又可证的k2对d3也是惟一的解既满足第一、二、三个方程的x对模d1d2d3也是惟一的解。 如此类推,可以证明满足全部方程的x对模d1d2…dk是惟一解。 例1.5 解方程 解 由于 所以 我们首先分别求解方程 的解 解出:x1=1,x2=2 然后用孙子定理求解方程 为此首相找出满足 Y1=1,y2=3 于是得到 2.4 二次剩余 定义2.10 (二次剩余、二次非剩余、平方根) 设n为大于1的整数(a,n)=1,若二次同余方程 有解,则称a为对模n的二次剩余。 否则,则称之为对模n的二次非剩余。 满足以上方程的x成为未对模n的a的平方根。 定义2.10 (二次剩余系)在小于n正整数中,模n的二次剩余的集合称为二次剩余系。记作。R2 定理2.6 对于任何奇素数p和任意a , 0ap方程 密码学中相关算法 在密码学中为了考虑更高级别的安全性需要密钥较长。 如RSA密码体制有时需要密钥长度达到1024bit长,使得现有一般计算机无法满足对此的计算,产生溢出,造成运算结果错误。 因此就有必要设计一个算法来解决运算产生溢出问题。 为了解决以上问题我们主要从以下两个方面考虑: 组织参与运算的数据 根据所组织参与运算的数据设计算法 (1)组织参与运算的数据 假设实现运算的计算机的字长为W位。 W通常是8的整数倍。 通常工作站的字长为64位或32位。 而低档的计算机字长w可能还小些。 如某些嵌入式计算机的字长是16位,而智能卡的字长可能只有8位。 设整数m的二进制长度为p t=m/W表示W位子的个数 显然整数m以二进制形式存储在一个t个w位字的数组A A为 A[t-1],A[t-2],….A[2],A[1],A[0] 其中最右边的A[0]是存放最

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档