信息安全技术基础_第六章课件.ppt

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

RSA非对称加密体制 RSA算法中的数学趣题 复习:RSA算法的描述 选择p, q两个素数 计算 n = pq, φ(n)=(p-1)(q-1) 选择 e, 其中 gcd(φ(n),e) = 1, 1e φ(n) 计算 d = e-1 mod φ(n) {e, n}构成加密密钥,{d, n}构成解密密钥 问题一 大素数的产生 素数(也叫质数):正整数p1, 正因子只有只有 1 和p 例:2, 3, 5, 7, 11 是素数 4, 6, 9 不是素数 合数:正整数 n1, 有除了1和 n以外的正因子 素数的求法 整数n的素数判定法:依次从2到√n,测试能否整除。如果能整除,则为合数。如果都不能都不能整除,n就是素数 这种方法的速度比较慢 上面的区间可以改为 1 a = n/2 更进一步可以改为 1 a = sqrt(n) 素数的筛法求法 [ 1][ 2][ 3][ 4][ 5][ 6][ 7][ 8][ 9][10] [11][12][13][14][15][16][17][18][19][20] 素数的分布规律 不大于n 的素数个数记为π(n) N很大时, π(n) ≈ n/lnn 素数的分布(大约的) n位十进制数的密度为1/nln10。N=100时,1/nln10 ≈ 1/230 估算100位的整数,要判定是否整数,要做多少个除法运算 素数的精确检验法:比如试除法,筛法 现在已经的精确检验法速度都很慢 素数的概率检验法: 速度比较快,但不能肯定它是素数,只能肯定一个数不是素数 Rabin – Miller 素数测试法 Witness(a, n): 将n-1 写成二进制bkbk-1…b0 d=1 For i=k downto 0 x = d d = d*d mod n if ( d=1 and x1 and xn-1) do return true if bi=1 do d=d*d mod n Next If d1 return true Return false 多次选择a。如果witness(a, n) 返回true,则n一定不是素数。如果返回false,则n不是素数的概率小于 ? 只要测试的次数足够大,则可以相信该数为素数 Rabin-Miller算法是Nist 推荐的素数检测算法 梅森素数(Mersenne)素数 p 为素数, Mp = 2p -1,如果Mp也是素数,则称Mp 为梅森素数 如 p = 2, 3, 5, 7, 13, 17, 19, 31, 61, 89, 107, 127等都是梅森素数 但 p = 23时不是 寻找大质数(GIMPS) GIMPS寻找最大质数项目 利用互联网上面的闲置计算机资源进行计算 Electronic Frontier Foundation(电子前沿基金会)为第一个找到1000万位质数的人准备了十万美元! GIMPS已经找到了7个梅森素数,目前找到的最大素数为第41个梅森质数 224036583-1 ,有7235733 位 GIMPS的参加方法 到/gimps下载客户端 需要填写用户资料 大整数的运算 RSA实用算法中的整数n要求长度为512个二进制位 普通的计算机可以直接计算的位数:32位二进制位 不能直接使用计算机语言中的普通整数类型进行RSA中的整数运算 为了进行大整数的运算,目前一般使用数组存储大整数,一个数组元素保存一位 比如一个整数元素保存一个十进制位 dim a(100) as integer dim b(100) as integer 为了提高运算的速度和存储的效率,一般取整数的进制的基为机器的字长。如32为机器上,基取为 2 ^ 32 大整数的加法和减法 从低位到高位逐位相加或相减,类似数学的竖式 要注意加法的进位处理 大整数的乘法和除法 模仿数学的竖式进行运算 除法运算在数论中一般进行带余除法 最大公约数的计算: 欧几里得算法 算法原理:如果 a = bk + r,则gcd(a, b) =gcd(b, r) 算法描述 int gcd(int a, int b) { if( b == 0) return a; else return gcd(b, a % b); } 例:求gcd(200, 80) 200 = 80 * 2 + 40 80 = 40 * 2 + 0 所以 gcd(200, 80) = 40 求a x + by = 1的解, 即 a ^ -1 mod b 扩展Euclid 算法 extended_euclid(a, b) { if(b == 0) return(a, 1, 0); else{ let a = kb + r; (d, x, y) = ext

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档