• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> WEB开发 >> ASP开发 >> 组件开发 >> 详细内容
 

推荐文章

 
 

热点文章

  • VB编写ActiveX DLL实现ASP编程
  • 汉字转换拼音(带音调)Asp版
  • 新生命Web服务器v1.1源码
  • VB编写ASP组件的调试
  • 使用ASPJPEG添加水印的方法
  • 用VB将ASP代码封装成DLL
  • 常见ASP组件介绍及下载
  • 用VB生成DLL封装ASP代码,连接数据库
  • 使用VB编写纯ASP程序
  • 调用winrar压缩文件夹
  • 利用OWC画图的例子
  • Asp生成条形码
 
 

相关文章

  • 一个用来画图的组件(画饼图,条形图,各种形状图象的
  • 利用OWC服务器端组件动态生成图表
  • 作一个可以直接和浏览器进行交互的组件
  • 一个用组件动态创建Excel文件的实例
  • 使用VC++6.0制作ASP服务器控件简介
  • 用VB创建FTP组件(get)
  • 用VB创建FTP组件(put)
  • 在WEB环境下打印报表的crystal的解决方案
  • 用ASP、VB和XML建立互联网应用程序
  • 如何制作无状态的ASP组件
  • 利用ASP改进文档上载控件
  • 利用ASP改进文档上载控件
 
 

百度搜索

 
 

使用 Visual C++创建Crypto加/解密组件

  • 阅览次数:
  • 文章来源: 网海之贝
  • 原文作者: 佚名
  • 整理日期: 2006-10-03
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

简介
这篇文章将教你如何使用 Visual C++ 和 ATL 工具和 Microsoft CryptoAPI 建立一个能加/解密数据的组件。
Crypto 101
本文使用Microsoft® Cryptographic Application Programming Interface (CryptoAPI),将苦涩难懂的逻辑算法操作隐藏起来,如果想知道详细信息请参看MSDN Library.如果想知道更多的密码系统,我推荐你看看这本书 Bruce Schneier's Applied Cryptography: Protocols, Algorithms, and Source Code in C

建立组件
首先,用"ATL COM AppWizard”建立一个新project。在这个例子中,我将其命名为”CryptoProj”。在 server type中选择”Dynamic Link Library (DLL)”,点按”Finish”继续。

定义界面
在 insert 菜单中点按"New ATL Object...",选择 “Simple Object”,然后按 Next。

在 “Names” 栏中,设 short name 为 “Crypto”,其他项照下面的填写。

在 Attributes  栏,确定 Apartment Threading Model 被选上,Support IsupportErrorInfo 选项勾上,然后按 OK.

按右键点击 Icrypto ,点”Add Method”加一个方法.

将该方法取名为”Encrypt”,在参数栏输入"[in] BSTR bstrPlainText, [in] BSTR bstrPassword, [out, retval] VARIANT *vCipherText".

再加一个方法,取名为”Decrypt”,参数为"[in] VARIANT vCipherText, [in] BSTR bstrPassword, [out, retval] BSTR *bstrPlainText"

实现加密方法
需要包括 CryptoAPI 库,在 Crypto.cpp 头加一句: #include <wincrypt.h>


现在来定义我们需要的各种变量。STDMETHODIMP CCrypto::Encrypt(BSTR bstrPlainText,
                              BSTR bstrPassword,
                              VARIANT *vCipherText)
{
        BYTE *pbData;
        BYTE *pbPassword;
        SAFEARRAY* psa;
        HCRYPTPROV hProv   = 0;
        HCRYPTHASH hHash   = 0;
        HCRYPTKEY hKey     = 0;
        DWORD dwCryptDataLen = 0;
        DWORD dwDataLen = 0;
        DWORD dwError = 0;
        char  buffer[200];

        USES_CONVERSION;


由于许多CryptoAPI 调用要用注册表,所以需要执行一句RevertToSelf().RevertToSelf();


下一步,我们需要将输入变量转化为我们能用的格式。dwDataLen = SysStringLen(bstrPlainText);
pbData = (BYTE*)OLE2A(bstrPlainText);
pbPassword = (BYTE*)OLE2A(bstrPassword);


然后,用CryptAcquireContext function取得省缺 Crypto provider的句柄。// Get handle to the default provider.
if (! CryptAcquireContext(&hProv,
   "aspZoneCryptoComponent

上一篇:PHP编程技巧:看实例学正则表达式
下一篇:构建支持Master/Slave读写分离的数据库操作类
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号