2.1.1 功能分析
经过1.2.2节的论述,我们可以将对软件的要求总结如下:
① 可以按要求的位数生成非对称密钥。
② 可以保存密钥和装载密钥,密钥保存为纯文本。
③ 可以用指定密钥以RSA算法加密任意一个文件,加密生成的数据为纯文本。
④ 可以装载加密过的文件,并用指定的密钥解密还原出原文件。
⑤ 提示信息完整、操作舒适、图形界面雅观
按上述描述,给出Use Case和Statechart如图2-1。
2.1.2 工程方案选择
结合现有的常见开发模式综合分析,有多种实现方案,下面陈述其中几种,并分析选择一种解决方案,并给出工程框架。
- 整个工程使用java平台实现
RSA密钥生成、RSA加密解密的功能实现十分简单,因为标准库中集成几乎所有功能,不需要从RSA算法出发进行编码。在j2se标准库中,javax.crypto中的Cipher类用于具体的加密和解密,java.security包直接提供了数字签名的相关方法。因为有强大的标准库支持,文件的读取和保存操作、各环节必要的数据编码转换、图形操作界面的实现也很简单(使用java.io java.awt或javax.swing 等包),如果结合一种快速开发的IDE,比如JBuilder,整个软件可以在很短的时间内编码完成。如果不考虑非PC设备和机器效率等问题,java平台几乎是最佳解决方案。但是缺点也很明显,如果想把核心算法和功能应用到非PC设备(例如嵌入式手持设备),则要求设备上有支持前面提及的加密类库的CVM;对于在PC上运行,J