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
方法中设置容器名称 - 导入/导出加密密钥
- 以及更多...