创建ATL项目并提供加密功能

最近,参与了一个涉及希腊、塞浦路斯和罗马尼亚证券交易所(www.greekmarkets.com, http://reporter.fasma.ro)的金融项目。该项目主要使用ASP和VB COM进行编码,并在SQL数据库之上使用少量ATL组件作为中间层。编写的中间层组件是使用ATL构建的,并使用了Crypto API。这个组件的目的是为HTTP提供加密数据,这些数据对ASP页面非常有用。由于HTTP传输,数据以十六进制格式编码。

首先,将向展示如何使用ATL控件以及如何提供方法来查询组件。

创建一个新的ATL COM AppWizard项目。在服务器类型中选择动态链接库(DLL),并勾选支持MFC和MTS。向类中添加一个新的ATL对象。从ATL对象向导中选择对象->简单对象。在属性标签页中选择线程模型的Free选项。

现在有一个非常好的组件。更重要的是通过方法或属性向其他程序提供数据。不幸的是,微软的向导有点不足,用户必须手动输入每个参数及其类型。

使用加密API并加密消息的最简单方法是: CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0); CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash); CryptHashData(hHash, (BYTE *)szLocalPassword, dwLength, 0); CryptDeriveKey(hProv, CALG_RC4, hHash, CRYPT_EXPORTABLE, &hKey); CryptEncrypt(hKey, 0, TRUE, 0, pbBuffer, &dwLength, dwLength); HtoA(dest, szPassword, sizeof(TCHAR)*_tcslen(dest)); 在ASP页面中使用该组件(在Visual Basic、Access或Microsoft SQL中相同)非常简单: dim myOEncrypt dim src, dest set myOEncrypt = Server.CreateObject("EncryptionATL.Encryption.1") src = "CryptoAPI" Response.Write "src: " & src Response.Write "Crypt: " dest = myOEncrypt.Crypt(src) Response.Write dest Response.Write "LastError: " & myOEncrypt.LastError Response.Write "Decrypt: " src = myOEncrypt.Decrypt(dest) Response.Write src Response.Write "LastError: " & myOEncrypt.LastError set myOEncrypt = nothing

安装:将DLL复制到具有系统执行权限的目录,并使用regsvr32命令注册,或者将其放在MTS上。这种方式更好,因为如果想要修改组件并再次注册,这是可能的,而无需重启计算机 - 就像使用regsvr32命令那样会"阻塞"dll文件。

打开MTS控制台(如果使用的是NT4)或组件服务(Windows 2000)。在计算机->电脑->COM+应用程序中选择NewApplication。给它起一个名字,例如"Crypt";在新的Crypt COM+应用程序中创建一个新组件,并选择加密dll文件。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:15216758379