公钥算法的实现.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
公钥算法的实现.ppt

公钥算法的实现 西南交通大学 信息科学与技术学院 李晓航 (xhli_scce@) 零、引言 大多公钥密码体制(如RSA)的安全性依赖大整数运算,如目前主流RSA 算法都建立在 512 到2048 Bits 的大整数运算之上。 例如一个 300 位(十进制)的 RSA模数 n = 零、引言(续) 而目前大多数开发工具的编译器只能支持到 64 Bits 的整数运算,即在运算中所使用的整数必须小于等于 64 Bits,即 0xffff ffff ffff ffff,也就是18446744073709551615。 显然,这远远达不到公钥算法安全性的需要,必须专门建立大整数运算库来解决这一问题。 一、大整数运算库基本运算 1、大整数的格式; 2、加法; 3、减法; 4、乘法; 5、带余数除法; 6、模运算; 7、模乘方; 8、输入、输出、赋值和转换; 大整数的格式 设计一个计算大数的函数库时,首先要确定在计算机的内存中如何表示大数。 显然可以使用一段连续的内存(数组)来存储和表示大数,但这里有几个问题要考虑: 1)内存管理方法,动态分配还是静态分配? 2)大数的“基”(B)如何选取? 3)大数在内存中的顺序? 大整数的格式(续) 大整数内存管理方法 选用静态数组(高效)。 大整数“基” (B)的选取 关键因素在于如何通过编译器尽可能把关于大整数的运算直接转化为CPU寄存器的算术运算,同时要考虑运算中间结果的规模。 常用的基:216=0x10000 或 232=0x100000000。与此对应,大数每个分量的类型为 unsigned short 或 unsigned long。 大数在内存中的顺序 从左到右,数字的值按从低到高的内存地址下降; 或反之,数字的值按从低到高的内存地址上升; 后面一个顺序,与自然的写法相反,它具有这样的优势:改变起始地址保持不变的数规模,可以通过简单地附加位数来实现,数字不必被重新分配内存。因此,数组内数字的排列顺序采用低位在前高位在后的方式。 大整数的格式(续) 实现的例子(对于基为 232): Typedef{ unsigned short Length; unsigned long Value[ MAXLEN ] ; } CBigInt; Length:记录大整数在232进制下的长度; MAXLEN:系统支持的最大整数长度( 232进制); 这样一个整数实际为(n=Length,B=232): 大整数的赋值和比较 大整数的赋值 内存拷贝 BICopy(CBigInt Src, CBigInt Dst); 大整数的比较 两个CBigInt对象的比较,首先比较两者的长度,长度较长的数大。若两者的长度相同,则从高位到低位,依次比较各位上的数值,相同位上数值较大的数大。 Int BICmp(CBigInt A, CBigInt B); 大整数的输入输出 大数的输入输出的最常用的办法是用人类可读的大整数字符串(10进制或16进制)与大整数(CBigInt)之间的转换 。 字符串转换成大整数时,依次读取每个字符,将字符转换成对应的数字,再将数字乘以16或10,加上转换得到的大数即可。 大整数转换成字符串时,只需要依次将大整数除以16或10,将模转换成对应的字符输出即可。 大整数基本运算(加、减、乘、除等) 在后面的介绍中,均假设运算的两个操作数为: 大整数的加法 大整数加法计算分析 加法的算法 大整数的减法 减法在原则上是和加法符号相异的同一种运算,其基本操作是相同的。 减法的算法 大整数乘法 乘法由于其实施所需要的时间而成为整个大整数运算中最关键的函数之一 。 乘法运算分析:A = 1234,B = 123,P = X×Y 大整数乘法(续) 乘法的算法 位数为m和n的两个运算对象的乘积至少有m+n-1位,至多有 m+n 位。 基本乘法的步骤(即因子小于基B的乘法)的个数为 。 乘法的算法(续) 平方的计算 计算一个大数的平方可用比大数乘法少得多的乘法次数完成。这是乘法中相同运算对象对称的结果。 利用这一特点,对于两个长度为 n 的大数,所需基本乘法的次数从 n2 降低为 n(n+1)/2。 而在幂运算中,涉及的不是一个平方,而是成百个平方,因此能大大提高速度。 带余除法 除法是所有4个基本运算中最为复杂的,同时,我们在密码学计算中通常只对余数感兴趣,而不太关心商。 二、与公钥相关的其他算法 1、模指数运算; 2、最大公约数; 3、素数检测; 4、其他一些数论函数。 5、….. 三、一些著名的大整数运算库 GMP——GNU Mathematics Library,/ NTL——A Library for doing Number The

文档评论(0)

docinppt + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档