其中的C1、C2、d1、d2如下:
根据RSA算法的要求,私密密钥d的二进制长度接近n的长度,因此,d1和d2的二进制长度仅有n的一半左右,这样就节省了大量的计算工作。最后,应用中国余数定理就能计算出的值m。 ,其中 .
如果应用中国余数定理计算幂模,主要工作花在计算 上,计算C1、C2、d1、d2和m的运算与幂摸运算相比,计算时间较短可以不计。而位数对幂摸运算速度影响很大,因此分开计算 比计算 要快很多。经过测试,使用中国余数定理来简化一些幂模运算,速度比不使用中国余数定理时有很大的提高。
在书写本文时软件中尚未使用中国余数定理。
第4章 可移植模块的简要说明与开发前景
如2.1.2节所叙述,分层设计给移植带来方便,下面简要叙述各层可能的移植方式。
①实现RSA加密算法的C++核心类库,是基于C和C++的标准库创建的,没有用到C++泛型计算、STL相关内容,代码中没有任何与操作系统相关的内容。这是一种移植特性最好的程序模块,因为现今多数非PC设备支持C++编译。一般可以直接将本模块交叉编译给嵌入式设备,或在其他操作系统编译使用。在编译前,将rsa_san.cpp和vlong.cpp文件中的#include "stdafx.h"一行去掉,然后连同各自的头文件拷贝出来,仅这四个文件即为实现RSA加密算法的C++类库代码。例如,可以将它们在linux操作系统用gcc编译成程序模块,把RSA加密功能提供给系统上的其他程序使用。
②封装C++核心类库的DLL组件可以被Windows上的很多开发环境引用。例如在VB6,要使用这个组件,只需在程序最开始以引用win32api的方式引用即可,即public declare function XXX的形式。
③作为.Net类库,此模块可以被几十种支持.Net的语言引用。但是由于底层DLL组件的存在,使应用局限于PC上的Windows系统。在此层的使用不仅限于窗体应用程序,.Net类库可以由服务器程序(诸如aspx)方便的引用,以BS(浏览器服务器)的模式提供给网络上的用户使用,所以此应用程序可以通过简单的修改用于数字证书和数字签名等身份验证系统。
如1.2.2节最后所分析的,将任意文件加密成文本有其重要的意义。
因为此应用程序是可以将任意文件加密成文本的,所以加密成的数据可以方便的在Internet上传送。由此想到xml在Internet上携带数据的应用模式。实际上,此软件可以通过简单的修改实现将任意文件加密为一定格式的xml文件。通过这种加密方式,可以满足重要的小应用程序等小型二进制数据在网络上安全顺利传输的要求。而且,通过加密的数据以xml方式传送,使web应用的灵活性更好,此方式甚至可以看作一种通用的小型二进制数据安全交换协议来开发。
结束语
RSA应用于文件加密适合交流管理小型文件,将任意文件以非对称密钥加密成文本可以对其更方便的交流和管理,有广阔的开发前景。本项目应用的设计模式兼顾执行效率和可复用性。整个项目开放源代码和各种开发资料,便于引用和继续开发。应用本程序可以方便的在公众论坛等环境交流要求高度安全的各种数据,包括任意二进制和文本文件。
谢 辞
感谢蒋X老师的细心指导和各论坛程序员朋友的支持与建议。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>