




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络与信息安全 课程设计报告 班级 07 网络工程 3 班学号 310709040308 姓名 韩立伟 题目 加密软件的设计 评阅 成绩 2010 1 07 网络与信息安全 课程设计报告 1 RSA 算法加密软件的设计 摘要 分析 RSA 算法的应用现状 论证文件加密应用 RSA 算法的可行性和意义 设计一 套完整实用的 RSA 文件加密解决方案 具体编码实现 对 RSA 算法进行研究 从常规 RSA 算法出发 用 C 实现 RSA 加密算法类库 并在 32 位 windows 平台封装成组件 在 Net 平 台引用此组件 实现可以对任意文件进行 RSA 加密操作的窗体应用程序 经过加密的文件 以及密钥文件都是文本文件 给出关键类类图 整个应用程序的结构描述文档 关键模块 流程图 较详细的接口文档 所有源代码 对应用程序进行测试 对测试结果进行分析研 究 进而对应用程序进行改进 对关键算法进行尽可能的优化 最终得到一个在 windows 运行的可以用指定密钥对任意文件进行 RSA 加密并可解密的完整应用程序 和一些相关的 可移植组件 关键词 RSA RSA 算法 文件加密 加密成文本 网络与信息安全 课程设计报告 2 目 录 第 1 章 RSA 应用现状及应用于文件加密的分析 4 1 1 RSA 算法介绍与应用现 状 4 1 21 2 RSARSA 应用于文件加密的分应用于文件加密的分 析析 5 1 2 1 文件加密使用 RSA 的可行性 5 1 2 2 文件加密使用 RSA 的意义 6 第 2 章 RSA 文件加密软件的设计与实现 7 2 1 需求分析与总体设计 7 2 1 1 功能分析 7 2 1 2 工程方案选择 8 2 2 各部分的设计与开发 10 2 2 1 实现 RSA 加密算法的 C 核心类库 10 3 2 测试数据与分析改进 14 3 2 1 密钥生成测试 14 3 2 2 数据输入输出测试 16 3 2 3 加密解密测试 16 总结与体会 17 网络与信息安全 课程设计报告 3 致谢 17 参考文献 17 前 言 RSA 公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法 它易于理解 和操作 也十分流行 算法的名字以发明者的姓氏首字母命名 Ron Rivest Adi Shamir 和 Leonard Adleman 虽然自 1978 年提出以来 RSA 的安全性一直未能得到理论上的证明 但它经历了各种攻击 至今 2007 年 未被完全攻破 随着越来越多的商业应用和标准化 工作 RSA 已经成为最具代表性的公钥加密技术 VISA MasterCard IBM Microsoft 等 公司协力制定的安全电子交易标准 Secure Electronic Transactions SET 就采用了标 准 RSA 算法 这使得 RSA 在我们的生活中几乎无处不在 网上交易加密连接 网上银行身 份验证 各种信用卡使用的数字证书 智能移动电话和存储卡的验证功能芯片等 大多数 使用 RSA 技术 当今公钥加密更广泛应用于互联网身份认证 本课题将公钥加密算法 RSA 应用于小型 文件加密 将任意文件加密成文本的解决方案 使其使用更加灵活 整个工程的分层设计 给引用移植和后续开发带来便利 网络与信息安全 课程设计报告 4 第 1 章 RSA 应用现状及应用于文件加密的分析 1 1 RSA 算法介绍与应用现状 RSA 算法可以简单叙述如下 取素数 p q 令 n p q 取与 p 1 q 1 互素的整数 e 由方程 d e 1 mod p 1 q 1 解出 d 二元组 e n 作为公开密钥 二元组 d n 作为私有密钥 b ae mod n c bd mod n 附录中给出了证明 a c mod n RSA 公开密钥加密算法自 20 世纪 70 年代提出以来 已经得到了广泛认可和应用 发 展至今 电子安全领域的各方面已经形成了较为完备的国际规范 RSA 作为最重要的公开 密钥算法 在各领域的应用数不胜数 RSA 在硬件方面 以技术成熟的 IC 应用于各种消费 类电子产品 RSA 在软件方面的应用 主要集中在 Internet 上 加密连接 数字签名和数字证书的 核心算法广泛使用 RSA 日常应用中 有比较著名的工具包 Open SSL SSL Security Socket Layer 是一个安全传输协议 在 Internet 上进行数据保护和身份确认 Open SSL 是一个开放源代码的实现了 SSL 及相关加密技术的软件包 由加拿大的 Eric Yang 等发起 编写的 相关详细介绍见 http www openssl org about Open SSL 应用 RSA 实现签 网络与信息安全 课程设计报告 5 名和密钥交换 已经在各种操作系统得到非常广泛的应用 另外 家喻户晓的 IE 浏览器 自然也实现了 SSL 协议 集成了使用 RSA 技术的加密功能 结合 MD5 和 SHA1 主要用于数 字证书和数字签名 对于习惯于使用网上购物和网上银行的用户来说 几乎天天都在使用 RSA 技术 RSA 更出现在要求高度安全稳定的企业级商务应用中 在当今的企业级商务应用中 不得不提及使用最广泛的平台 j2ee 事实上 在 j2se 的标准库中 就为安全和加密服务 提供了两组 API JCA 和 JCE JCA Java Cryptography Architecture 提供基本的加密 框架 如证书 数字签名 报文摘要和密钥对产生器 JCA 由几个实现了基本的加密技术 功能的类和接口组成 其中最主要的是 java security 包 此软件包包含的是一组核心的 类和接口 Java 中数字签名的方法就集中在此软件包中 JCE Java Cryptography Extension 在 JCA 的基础上作了扩展 JCE 也是由几个软件包组成 其中最主要的是 javax crypto 包 此软件包提供了 JCE 加密技术操作 API javax crypto 中的 Cipher 类 用于具体的加密和解密 在上述软件包的实现中 集成了应用 RSA 算法的各种数据加密规 范 RSA 算法应用规范介绍参见 这些 API 内部支持的算法不 仅仅只有 RSA 但是 RSA 是数字签名和证书中最常用的 用户程序可以直接使用 java 标 准库中提供的 API 进行数字签名和证书的各种操作 单机应用程序使用 RSA 加密尚比较少见 例如使用 RSA 加密任意一个文件 1 2 RSA 应用于文件加密的分析 1 2 1 文件加密使用 RSA 的可行性 通过 1 1 节的论述 不难看出 RSA 当今的应用多在于数字签名和证书等方面 之所以 只应用于这些短小数据的加密解密 是因为 RSA 算法加密极慢 速度是 DES 对称密钥加密 速度的千分之一左右 正是因为这样 把 RSA 应用于普通文件加密的想法一直被忽略 通 常文件被想象成大数据块 但是实际上在日常应用中 有些极其重要的文本资料是并不太 大的 比如因担心遗忘而用普通文本记录的银行帐号和密码 不应被陌生人知道的重要电 话号码 几千字节大的重要小图片等 其实从一个简单的角度来说 既然 RSA 用于数字签名可行 那就完全可以用于同样大 小的普通文件 对于较大的文件 如果分成与数字签名同样大小的段 这里假设数字签名较 网络与信息安全 课程设计报告 6 短 不分段一次计算加密完成 分开的各段逐一进行加密运算 那所需要的时间也只是按 文件大小线性的增长 通常数字签名为几十字节 加密运算并不需要很长的等待 这就说 明对于几百字节或一两 K 字节大小的文件来说 如果进行 RSA 加密 并不会是非常漫长的 工作 当然 如果文件更大 加密就显得十分漫长了 比如按前面叙述的 45 毫秒大数运算 程序推理 加密 1M 字节大小的文件需要约 1 天的时间 所以 要在普通 PC 用几百位以上 的长密钥 RSA 加密文件 文件不能过大 一般可以接受的上限是几 KB 如果要在较短时间 内加密大文件 需要缩短密钥长度以减小运算量 这将带来安全性隐患 本文的第 3 章将根据实际调试好的软件 测试给出具体的时间消耗数据 例如 在一 台配置为 AMD Athron2800 外频 333MHZ 物理内存 512MB 的 PC 上测试实现的软件 以 560bit 的 n 逐字节加密一个 1KB 大小的文件需要 55 秒 通常记录如银行帐号密码等重要 数据的文本文件大小不足百字节 加密只需要数秒钟 所以对于小型文件 进行较长密钥 的 RSA 加密是完全可行的 1 2 2 文件加密使用 RSA 的意义 如 1 2 1 节所述 小型文件加密可以使用 RSA 比如 因担心遗忘而用普通文本记录 的银行帐号和密码 不应被陌生人知道的重要电话号码 几千字节大的重要小图片等 可 行的方法未必是必要的 本小节讨论何种文件适合用非对称密钥加密 即 RSA 加密文件的 意义所在 对于前面叙述的带有重要信息的小型文本和二进制数据的维护 如果不加密 将无 法放心的保存在计算机上 尤其是连网的或机房里的公共计算机 如果借助功能强大的 大型多用户数据保护程序维护几个小型文件 显得十分烦琐 好比杀鸡用牛刀 如果采 用对称密钥加密 即加密解密的密钥相同 只适合部分情况 在某些情况下 使用对称密 钥加密文件 交流使用不够方便 比如 张三由于某种原因 需要将自己的某个文件在公 共计算机上留给李四 而不希望别人看到内容 如果采用对称密钥加密 张三和李四提前 约好一个密码就可以 但是如果张三想要在同一台公共计算机上再留一个秘密文件给王五 而不希望别人看到 就要和王五另外约定一个密码 如果需要在这台公共计算机上留十个 文件给不同的人 自己就要记和十个人约定好的密码 这样以来交流起来不够方便 因为 对于张三 要自己维护太多的密钥 非对称密钥 公开密钥方式 恰好解决这样的问题 只 要大家都在这台计算机或这台计算机可以访问到的地方 留下自己的公开密钥 一切就变 网络与信息安全 课程设计报告 7 的容易解决了 张三要留给李四的文件 就用李四的公开密钥加密 要留给王五的文件 就用王五的公开密钥加密 李四和王五只要把留给自己的文件用自己的私有密钥解密 就 可以得到留给自己的文件了 显然 非对称密钥体制更适合多用户交流 而将这种加密方 式直接应用于文件加密 使我们在公开场合的交流更加灵活方便 一种更实际的情况是 我们想通过 Internet 上的公众论坛或邮件发送重要保密信息 给某人 例如发送一个银行帐号和密码给某人 这种情况要保证安全 在当今互联网络上 是比较棘手的 如果用公众论坛直接留言给指定用户 论坛管理员和服务器管理员通常 有方法看到数据 如果发送邮件 虽然传送过程是加密的 但是密码毕竟是由邮件服务 器维护 所以系统管理员通常也有办法看到内容 问题的关键在于我们所有的数据包括密 钥保存在服务器之上 在这种情况下 我们需要使用公开密钥方式 并自己维护私有密钥 RSA 文件加密可以灵活的解决这些问题 例如 我们可以将任意一个文件用某人的公开密 钥加密变换成一段可以复制粘贴的文本 然后粘贴在公众互联网上 对方只需把需要解密 的文本复制保存成一个文本文件 在本地机用自己的私有密钥解密即可 我们可以将自己 的私有密钥通过 DES 加密后保存在自己的移动磁盘上 使用的时候只要将其解密读取即可 用完后立即从当前操作环境清除 这样 我们自己维护自己的私有密钥 利用简单并且公 开的方式 可以安全传送任意小型数据 包括一切二进制文件 所以 对于使用小型文件进行数据交换的情况 更好的方案是通过一个小型应用程序 对这些文件进行非对称密钥加密 为了适合前面叙述的在公共 BBS 与特定的某人交流重要 保密信息的情况 加密生成的数据应该是文本 这样可以方便复制粘贴 综上所述 使用前面叙述的方式加密文件有两点重要意义 应用非对称密钥加密任 意文件 使非对称密钥的应用不仅仅局限于互联网络 非对称加密后的数据变换成文本 使得我们可以通过几乎任何方式安全传递任意文件 比如在只有 http 的环境使用 xml 方式 网络与信息安全 课程设计报告 8 第 2 章 RSA 文件加密软件的设计与实现 2 1 需求分析与总体设计 2 1 1 功能分析 经过 1 2 2 节的论述 我们可以将对软件的要求总结如下 可以按要求的位数生成非对称密钥 可以保存密钥和装载密钥 密钥保存为纯文本 可以用指定密钥以 RSA 算法加密任意一个文件 加密生成的数据为纯文本 可以装载加密过的文件 并用指定的密钥解密还原出原文件 提示信息完整 操作舒适 图形界面雅观 按上述描述 给出 Use Case 和 Statechart 如图 2 1 图 2 1 本项目的 Use Case 和 Statechart 根据以上分析 一般来说 需要进行编码的程序有 RSA 密钥生成 RSA 加密解密 任意文件的读取和保存操作 各环节必要的数据 编码转换 图形操作界面 网络与信息安全 课程设计报告 9 2 1 2 工程方案选择 结合现有的常见开发模式综合分析 有多种实现方案 下面陈述其中几种 并分析选 择一种解决方案 并给出工程框架 1 整个工程使用 java 平台实现 RSA 密钥生成 RSA 加密解密的功能实现十分简单 因为标准库中集成几乎所有功能 不需要从 RSA 算法出发进行编码 在 j2se 标准库中 javax crypto 中的 Cipher 类用于具 体的加密和解密 java security 包直接提供了数字签名的相关方法 因为有强大的标准 库支持 文件的读取和保存操作 各环节必要的数据编码转换 图形操作界面的实现也很 简单 使用 java io java awt 或 javax swing 等包 如果结合一种快速开发的 IDE 比如 JBuilder 整个软件可以在很短的时间内编码完成 如果不考虑非 PC 设备和机器效率等问 题 java 平台几乎是最佳解决方案 但是缺点也很明显 如果想把核心算法和功能应用到 非 PC 设备 例如嵌入式手持设备 则要求设备上有支持前面提及的加密类库的 CVM 对于 在 PC 上运行 JVM 的数据运算速度要远远落后于本地化代码在 PC 上的运算速度 本软件 需要进行大量运算 这一点不适合由 java 完成 2 整个工程使用 Net 平台实现 与使用 java 平台完全类似 加密等有 Net 基础类库的支持 不需要大量编码实现 另外由于 Visual Studio 的强大便利 这种规模的工程可以十分迅速的完成 缺点是只能 在有微软 Net Framework 的环境运行 在 Windows 操作系统 Net Framework 的机器效率 好于 java 平台 但是相比于本地化的代码 还是十分拖沓的 3 整个工程使用 Windows 本地化程序实现 在不应用 Windows 或第三方现成组件的情况下 需从 RSA 算法出发编码实现 其他各 功能的设计开发 如文件操作 数据编码转换和图形界面等 可以使用 ATL MFC 或 Windows API 实现 这种工程几乎是为 Windows 量身订做 执行效率最好 但是对于非 PC 设备 只能方便的移植到运行 Windows 嵌入式操作系统的设备 向其他操作系统移植困难 需要重新编写大量代码 通常解决本地化代码的移植问题 都是使用 C 标准库 即功能 尽量多的由 C 标准库完成 这样在移植的时候 只需要重新编写操作系统相关的代码即 网络与信息安全 课程设计报告 10 可 这种开发方式比起前两种 缺点就是设计开发模式陈旧 代码烦琐 不方便维护 流 行的 Net 上的语言引用各种功能比较麻烦 4 考虑可能的复用 针对具体情况分层开发实现 综合考虑复用性 可维护性和执行效率 较妥当的方法是分层设计 核心的 RSA 算法 由 C 类库实现 针对用户所在的操作系统封装成本地化组件 其他各功能如文件操作 数据编码转换和图形界面等 由托管代码借助虚拟机平台标准库的功能快速开发实现 本文 针对选用 Net 上的 C 论述 选用 java 由 JNI 或其他方式调用本地组件 设计模式上是完 全类似的 这种开发方式 核心功能集中在最底层 在不断的封装中针对具体环境对组件 功能不断扩充 任意一个层面的封装都可以被直接应用到其他项目 比如在 Web 使用以前 为某窗体程序写的组件 给嵌入式设备交叉编译算法库等 但是每一层都需要依赖底层的 所有组件 图 2 2 形象的说明了分层设计给复用带来的好处 选用第四种设计方案 上层使用 C 底层算法使用 C 可以由一个 Visual Studio 解决方案管理 给调试带来极大的方便 整个工程分四层 实现 RSA 加密算法的 C 核心 类库 封装 C 核心类库的 DLL 组件 引用 DLL 的 Net 类 实现文件操作功能的 Net 窗体 应用程序 2 2 节详细介绍各部分的设计与开发 考虑到工作量 本软件加解密数据没有严格遵从 RSA 标准 PKCS 1 而是在满足设计 要求的前提下 以一种尽可能简单的方式实现加密和解密 2 2 各部分的设计与开发 2 2 1 实现 RSA 加密算法的 C 核心类库 1 大数存储和四则运算 根据 RSA 算法的要求 为了实现大数的各种复杂运算 需要首先实现大数存储和基本 四则运算的功能 当今开源的大数运算 C 类有很多 多用于数学分析 天文计算等 本 文选用了一个流行的大数类型 并针对 RSA 算法和本项目的具体需要对其进行了扩充和改 进 下面简单介绍大数存储和四则运算的实现原理 最先完成的功能是大数的存储 存储功能由 flex unit 类提供 和普通的类型一样 每一个大数对应一个 flex unit 的实例 类 flex unit 中 用一个无符号整数指针 网络与信息安全 课程设计报告 11 unsigned a 指向一块内存空间的首地址 这块内存空间用来存储一个大数 所以可以说 大数是被存储在一个以 unsigned 为单元的线性组中 在方法 void reserve unsigned x 中 通过 C 的 new 来给 a 开辟空间 当 flex unit 的实例中被存入比当前存储的数更大的数 时 就会调用 reserve 来增加存储空间 但是当 flex unit 的实例中被存入比当前存储的 数更小的数时 存储空间并不会自动紧缩 这是为了在运算的时候提高执行效率 结合指 针 a 有两个重要的无符号整数来控制存储 unsigned z 和 unsigned n z 是被分配空间 的单元数 随数字变大不断增大 不会自己紧缩 而 n 是当前存储的大数所占的单元数 组成一个大数的各 unsigned 单元的存入和读出由 set get 方法完成 变量 n 是只读的 类型 unsigned 在 32 位机是 32 位的 所以对于 flex unit 这个大数类来说 每个大数最大 可以达到 个字节长 这已经超过了 32 位机通常的最大内存容量 所以是足够进行 RSA 所 需要的各种运算的 图 2 3 形象的说明了大数存储类 flex unit 对大数的管理 2 寻找素数 Eratosthenes 筛选与 Fermat 素数测试 首先要说明的是 事实上 当今的计算机还不足以聪明到立刻计算生成一个很大的随 机素数 一般来说 要得到 100 准确的大素数 都是通过查已经计算好的素数表的方式 但是素数表的方式给 RSA 的安全性带来隐患 因为攻击者如果得到了密钥生成时所使用的 素数表 攻破 RSA 加密的难度将会大大降低 本程序起初使用素数表的方式 后来考虑到 安全性问题 生成密钥的方式改为随机计算生成 这样 短时间内如果要得到一个 100 准 确的大素数是很困难的 只能以尽可能高的概率得到一个大素数 经过 2 2 1 1 和 2 2 1 2 小节 所有的大数运算功能都准备完毕 在此基础上 本工 程将寻找素数的功能置于类 Prime factory san 之中 外部只要调用本类实例的成员 vlong find prime vlong i np i unsigned p pl i unsigned r start vlong p if r r p r while r 0 x r 图 2 5 在素数搜索范围内剔除小素数因子 p 的倍数 网络与信息安全 课程设计报告 13 接下来 对可能为素数的数 即标记数组 b 中值为 1 的元素对应的数 进行素数测试 数论学家利用费马小定理研究出了多种素数测试方法 本程序使用一种最简单的方式 直 接应用费马小定理 取一个与 p 互素的整数 A 对于大素数 p 来说应该满足 Ap 1mod p 1 但是我们把 p 代入一个大整数 满足这个关系的数不一定是素数 这时我们改变 A 进行 多次测试 如果多次测试都通过 这个数是素数的概率就比较大 按这种原理 我们编写 素数测试函数如下 int is probable prime san const vlong 测试次数 const unsigned any rep 2 3 5 7 测试用的底数 for unsigned i 0 i rep i 1 if modexp any i p vlong 1 p vlong 1 return 0 modexp 是幂模函数 按上一小节叙述的算法编码 这里 modexp 计算 any i p 1mod p return 1 测试通过 程序就判定这个数为找到的素数 将找到的素数返回给上层程序使用 在 这里其实有一个不可忽视的问题 就是得到一个测试通过的合数 对于这种情况 RSA 算 法加密解密是否还可以实现 是一个需要从数学角度论证的问题 因为得到素数的概率很 高 经过一整天的生成密钥和加密操作 没有发现失败的密钥 所以本文暂没有对这个问 题进行讨论 综上所述 总结素数寻找的流程 如图 2 6 所示 网络与信息安全 课程设计报告 14 开始 按 start 参数初始化标记数组 b SS i 0 计数 i SS b i 1 判定为素数 start 1 i 1 结束 返回素数寻找结果 start Yes Yes Yes No No No 图 2 6 函数 find prime 寻找素数的流程框图 得到了大素数 即 RSA 算法中的 p q 我们就可以计算出密钥 进行加密等操作了 3 2 测试数据与分析改进 3 2 1 密钥生成测试 生成密钥运算最费时的工作是寻找素数 如 2 2 1 3 小节所叙述 寻找素数是一项颇 为复杂的工作 其速度可能受以下变量的影响 RSA 加密需要的 n 的位数 寻找素数的整 数起点大小 start 大素数测试时底数 A 的个数 针对一个整数的素数测试次数 小素 数因子 p 的个数 NP 一轮寻找遍历的整数个数 SS 等 其中最具影响力的因素显然是 RSA 加密需要的 n 的位数 以下对各变量分别进行测试 暂且忽略操作系统调度对测试的影响 网络与信息安全 课程设计报告 15 1 测试加密使用的 n 位数对耗时的影响 即 在固定 A NP SS 等变量的情况下 改变加密位数 n 测试密钥生成的时间消耗情 况 测试时 A 取 4 个值 分别为 2 3 5 7 NP 取 200 SS 取 1000 测试 PC 配置为 CPU CR1 7GHZ 外频 100MHZ 物理内存 512MDDR MSI6398 主板 845 Ultra AD 芯片组 下文 测试中 未说明 PC 配置的也都在同一 PC 完成 不再重复 在较常用的 1024 位 RSA 加密时 用本软件的算法 测试时最长出现了 17 秒多的计算 虽然这对于用户来说时漫长的等待 但是考虑到安全性 还是舍弃了素数表和密钥库的方 案 而使用大素数随机生成 用户可以把生成的私钥单独加密保存在可靠的存储空间内 以获得更高的安全性 表 3 1 仅能从实验的角度直观理解 具体到一次密钥生成的运算 所需要的时间是很 不确定的 比如 一次 1280 位的密钥生成 需要的时间完全可能比一次 896 位的密钥生成 时间短 由于素数分布规律非常奥妙 加上测试运算需要的时间颇长 这里很难给出对于 一个具体位数的密钥生成所需时间的统计模型 另外需要说明的是 表 3 1 的加密位数在实际软件设置时并不严格 这是因为 实际 作为参数设置的是两个大素数的搜索起点 如果随机生成的起点整数大小比较接近更长一 位的整数的话 例如 FFFF 很接近 10000 向后寻找所得到的素数很可能长出一位 而且 两个 k 位长的整数相乘的结果也未必是 2k 位 比如 100 100 10000 相乘结果是 2k 1 位 所以 在表 3 1 实际测试填写时 加密位数可能会有几位的差距 但是这不碍大局 2 测试底数 A 对耗时的影响 为了保证生成素数的成功率 A 至少要有 4 个 如果少于 4 个 则素数测试失败的可 能性比较大 经过测试发现不可以忽略 2 2 1 3 小节曾经提到 如果素数测试通过了合 数 就可能产生错误的密钥 使加密解密操作失败 所以测试 A 的时候 最少有让其取 4 个值 而取 6 个值以上 测试算法失败的概率已经非常小 没有什么实用意义 所以这里 测试 A 从 4 个到 6 个的情况 固定其他变量 n 取 512 位和 1024 位 即素数搜索起点位数 设置为 32 和 64 NP 取 200 SS 取 1000 从理论上说 对于同样的起点 素数测试次数 越多 需要的时间就越长 可以看出 对于 512bit 密钥 A 取从 4 个到 6 个 对随机密钥的产生时间影响不大 但是对于较长的 1024bit 密钥 A 取 4 个和 A 取 6 个值 密钥生成时间产生明显差距 A 取 6 个值时生成随机密钥需要的平均时间比 A 取 4 个值时长数秒之多 为了同时保证密钥 网络与信息安全 课程设计报告 16 生成速度和素数的准确程度 我们在实际使用时取 A 为 5 个值 即 2 3 5 7 11 3 测试小素数因子个数 NP 对耗时的影响 固定其他变量 A 取 5 个分别为 2 3 5 7 11 n 取 512 位和 1024 位 即素数搜索 起点位数设置为 32 和 64 SS 取 1000 由于测试时间漫长 测试的数据量比较有限 这 里并没有看出什么明显的规律 而且通过本次测试还可以发现 表 3 3 中 NP 为 200 n 为 1024bit 测试的一行 变量 设置和表 3 2 中 A 设置为 2 3 5 7 11 n 为 1024bit 的一行完全一致 对应还有一行 n 为 512bit 的数据变量设置一致 但是耗时平均差距相差 4 秒之多 512bit 的一行差距 不到 1 秒 可见对于长密钥 同一种情况测试 5 个数据取均值并不能精确的说明问题 除 非测试得到的数据有很明显的大幅差距 例如前面两段测试 n 的位数和 A 的个数的耗时影 响情况 这里也正是因为前面提到的 对于大整数来说 可能出现在较长一段区间中没有 素数的情况 使得同样设置的各次密钥生成耗时的可能范围很大 再加上大素数分布规律 奥妙 观察 5 次测试结果的均值对于不很明显的规律显得意义不大 实际使用中 设置 NP 值为 200 4 测试 SS 对耗时的影响 同样未发现明显规律 在使用中设置 SS 为 1000 3 2 2 数据输入输出测试 主要测试文件的输入输出性能 实际上就是测试 Net 基础类库中实现文件操作的 System IO 中的 StreamReader StreamWriter 等类的读写性能 直接在 Visual Studio 调 试一个简单的 C 文件读写程序 得到本软件中使用的文件操作方法的执行性能 在配置为 CPU CR1 7GHZ 外频 100MHZ 物理内存 512M DDR MSI6398 主板 845 Ultra AD 芯片组 UTA133 2M 缓存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新一代物流智能配送中心建设规划
- (2025年标准)关于房屋合建协议书
- 威奥特公司员工手册
- 改革开放快闪课件
- 2025年厨师长职业技能鉴定面试指南及模拟题
- 2026届四川省成都市新津中学高三上化学期中经典模拟试题含解析
- 建筑业项目成本管控与效益分析方案
- 河北保定部分高中2024~2025学年高二上学期期中考试物理试卷(原卷版)
- 智能工厂与智能制造作业指导书
- 2025年金融分析师考试全攻略知识体系与应试技巧
- 惠州卫生职业技术学院辅导员考试真题2022
- 2022年咖啡师资格证考试参考题库及答案
- 收音机组装指导书
- GB/T 28288-2012足部防护足趾保护包头和防刺穿垫
- GB/T 1508-2002锰矿石全铁含量的测定重铬酸钾滴定法和邻菲啰啉分光光度法
- 行为金融学案例
- 万科集团财务管理制度手册207
- “李可中医药学术流派论治厥阴病”-课件
- 通用技术作品设计报告
- 锚杆支护技术规范正式版本
- 下一代互联网技术
评论
0/150
提交评论