65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 ATL 进行加密和解密

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.44/5 (9投票s)

2003年6月10日

2分钟阅读

viewsIcon

66403

downloadIcon

1391

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

Sample Image - EncryptionDecryption.gif

引言

在阅读了 Leon Finker 的 ATL Server - Web Application/Web Service 之后,我制作了一个简单的应用程序来演示 ATL 实现的密码学。一个是命令行工具,第二个是 WTL 对话框(见上图)。

背景

请阅读 MSDN 库中 ATL Server Library ReferenceCryptographic Reference 部分。

使用代码

有三个项目,EncryptionDecryption 包含用于存储参数、解析命令行以及基于提供的参数对文件进行加密/解密的类。Console,命令行应用程序,以及 Window,带有 GUI 的 WTL 应用程序。

参数存储在 Parameters 类中,具有简单的 getter/setter 以及一个重要的 IsValid 方法,该方法检查 Parameters 的一致性。只有有效的 Parameters 才能由下一个类 Engine 及其 DoJob 方法处理。错误由 Error 类管理,该类仅存储错误代码和消息。Parser 类(仅在控制台应用程序中需要)解析命令行参数。WTL 项目,基于对话框,还有一个额外的类,FileEdit,文件拖放目标。用户不必输入文件名或从打开文件对话框中选择文件,他/她可以将文件从资源管理器拖放到编辑控件上。

对于控制台应用程序,需要以下步骤
  • 创建 ErrorParametersParser 实例
  • 解析命令行(ParseCommandLine 方法)
  • 检查参数(IsValid 方法)
  • 创建 Engine 实例并调用其 DoJob 方法。
对于窗口应用程序,需要以下步骤
  • Parameters 作为窗口对话框类的成员
  • 创建 Error 实例并设置从对话框控件读取的参数
  • 检查参数(IsValid 方法)
  • 创建 Engine 实例并调用其 DoJob 方法。

如前所述,FileEdit 类支持拖放文件。但对于使用浏览按钮的用户,窗口对话框类会跟踪选择的文件夹。两个 CString 字段:m_szInputFileDirm_szOutputFileDir 在浏览期间记住路径。

可以参数化其他内容,例如
  • CCryptProv 类的 Initialize 方法中设置加密提供程序类型
  • CCryptProv 类的 Initialize 方法中设置容器名称
  • 导入/导出加密密钥
  • 以及更多...
© . All rights reserved.