2 RSA文件加密软件的设计与实现
2.1 需求分析与总体设计
2.1.1功能分析
经过1.3.2节的论述,我们可以将对软件的要求总结如下:
① 可以按要求的位数生成非对称密钥。
② 可以用指定密钥以RSA算法加密任意一个文件,加密生成的数据为纯文本。
③ 可以装载加密过的文件,并用指定的密钥解密还原出原文件。
④ 提示信息完整、操作舒适、图形界面雅观
按上述描述,给出Use Case和Statechart如图2-1。
根据以上分析,一般来说,需要进行编码的程序有
①RSA密钥生成 ②RSA加密解密 ③任意文件的读取④各环节必要的数据编码转换 ⑤图形操作界面。
2.1.2 工程方案选择
综合考虑复用性、可维护性和执行效率,较妥当的方法是分层设计。核心的RSA算法由C++类库实现,针对用户所在的操作系统封装成本地化组件。其他各功能如文件操作、数据编码转换和图形界面等,由托管代码借助虚拟机平台标准库的功能快速开发实现(本文针对选用.Net上的C#论述,选用java由JNI或其他方式调用本地组件,设计模式上是完全类似的)。这种开发方式,核心功能集中在最底层,在不断的封装中针对具体环境对组件功能不断扩充,任意一个层面的封装都可以被直接应用到其他项目,比如在Web使用以前为某窗体程序写的组件、给嵌入式设备交叉编译算法库等。
选用这种设计方案,上层使用C#,底层算法使用C++,可以由一个Visual Studio解决方案管理,给调试带来极大的方便。整个工程分四层,实现RSA加密算法的C++核心类库、封装C++核心类库的DLL组件、引用DLL的.Net类、实现文件操作功能的.Net窗体应用程序。2.2节详细介绍各部分的设计与开发。
考虑到工作量,本软件加解密数据没有严格遵从RSA标准PKCS #1,而是在满足设计要求的前提下,以一种尽可能简单的方式实现加密和解密。
2.2各部分的设计与开发
2.2.1实现RSA加密算法的C++核心类库