ATLVisual Studio .NET 2002Visual C++ 7.0Windows 2003Windows 2000Windows XP中级开发Visual StudioWindowsC++
使用 ATL 进行加密和解密






4.44/5 (9投票s)
2003年6月10日
2分钟阅读

66403

1391
基于 ATL 加密实现的 WTL 和控制台应用程序

引言
在阅读了 Leon Finker 的 ATL Server - Web Application/Web Service 之后,我制作了一个简单的应用程序来演示 ATL 实现的密码学。一个是命令行工具,第二个是 WTL 对话框(见上图)。
背景
请阅读 MSDN 库中 ATL Server Library Reference 的 Cryptographic Reference 部分。
使用代码
有三个项目,EncryptionDecryption 包含用于存储参数、解析命令行以及基于提供的参数对文件进行加密/解密的类。Console,命令行应用程序,以及 Window,带有 GUI 的 WTL 应用程序。
参数存储在 Parameters 类中,具有简单的 getter/setter 以及一个重要的 IsValid 方法,该方法检查 Parameters 的一致性。只有有效的 Parameters 才能由下一个类 Engine 及其 DoJob 方法处理。错误由 Error 类管理,该类仅存储错误代码和消息。Parser 类(仅在控制台应用程序中需要)解析命令行参数。WTL 项目,基于对话框,还有一个额外的类,FileEdit,文件拖放目标。用户不必输入文件名或从打开文件对话框中选择文件,他/她可以将文件从资源管理器拖放到编辑控件上。
- 创建 Error、Parameters和Parser实例
- 解析命令行(ParseCommandLine方法)
- 检查参数(IsValid方法)
- 创建 Engine实例并调用其DoJob方法。
- 将 Parameters作为窗口对话框类的成员
- 创建 Error实例并设置从对话框控件读取的参数
- 检查参数(IsValid方法)
- 创建 Engine实例并调用其DoJob方法。
如前所述,FileEdit 类支持拖放文件。但对于使用浏览按钮的用户,窗口对话框类会跟踪选择的文件夹。两个 CString 字段:m_szInputFileDir 和 m_szOutputFileDir 在浏览期间记住路径。
- 在 CCryptProv类的Initialize方法中设置加密提供程序类型
- 在 CCryptProv类的Initialize方法中设置容器名称
- 导入/导出加密密钥
- 以及更多...
