第六章 二元域椭圆曲线加密算法.pdf

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二元域椭圆加密算法(ECC)C 语言实现 二元域椭圆曲线加密算法 (ECC) C语言实现 dajiangwan@ 2013-9-22 dajiangwan@ 2013-09-22 二元域椭圆加密算法(ECC)C 语言实现 1. 前言 1 2. BN 定义 2 3. BN 算法 5 3.1. 单宽度整数乘法 5 3.2. 单宽度整数除法 6 3.3. 中间计算结果函数 7 3.4. 计算大数位数的函数 9 3.5. 大数转换函数 10 3.6. 大数赋值函数 11 3.7. 大数比较函数 12 3.8. 大数移位函数 13 3.9. 大数加减函数 14 3.10. 大数乘法函数15 3.11. 大数除法函数 16 3.12. 大数取模函数17 3.13. 大数乘法取模函数17 3.14. 大数求倒数取模函数18 3.15. 大数其他函数19 4. HASH 函数 21 5. ECC 算法 25 5.1. ECC 算法头文件 25 5.2. ECC 算法实现 26 6. 附录 45 7. 参考资料48 dajiangwan@ 2013-09-22 二元域椭圆加密算法(ECC)C 语言实现 1. 前言 二元域的椭圆加密算法在工作中会遇到,由于该算法涉及到许多数学理论,要理解算法 不是太容易。 ECC在PC机上有很多实现,比如openssl、tomcrypto以及gcrypto等;以上的算法由 于要考虑运行效率,使用了很多加速算法,导致阅读时不易理解。 为了理解该算法的关键部分,本文依照RSA提供的大数算法,对TinyBECC 的源码进行 整理修改,实现了ECC 加密算法的ECDSA 。该代码可以在Windows 下使用Microsoft VC 6.0 进行编译,也可以在Fedora Linux 下的使用gcc 进行编译。为了验证算法的正确性,可以通 过openssl 进行对比测试。 作为一个示例性的程序,性能较差,只能用来了解ECC 算法的原理。 dajiangwan@ 2013-09-22 1 二元域椭圆加密算法(ECC)C 语言实现 2. BN 定义 ECC 使用大数进行运算,在计算机表示大数时,一般采用多个字节来存储。在C 语言 中使用整数数组来存储大数。以下代码假设计算机的整数宽度为32Bit, 存储时先存储低端 数据,后存储高端数据。以下代码是从RSA 提供的RSA 算法实现参考中(BN.h 和BN.c)复 制出来的,然后进行了一些修改。以下代码定义一些宏、数据类型以及函数原型。 #ifndef _BN_H #define _BN_H typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int

文档评论(0)

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

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

1亿VIP精品文档

相关文档