使用Visual C++创建Crypto加/解密组件
2008-11-13 19:30:27 来源:WEB开发网实现加密方法
需要包括 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", MS_DEF_PROV,
PROV_RSA_FULL, CRYPT_MACHINE_KEYSET))
{
if (! CryptAcquireContext(&hProv,
"aspZoneCryptoComponent", MS_DEF_PROV,
PROV_RSA_FULL, (CRYPT_NEWKEYSET |
CRYPT_MACHINE_KEYSET)))
{
dwError = GetLastError();
sprintf(buffer, "Error %x during CryptAcquireContext",
dwError);
return Error(buffer);
}
}
- ››使用linux中的quota教程
- ››使用jxl生成带动态折线图的excel
- ››创建SQL2005自动备份,定期删除的维护计划
- ››使用mysql mysqldump进行数据库迁移
- ››Visual Basic 2008 数学函数
- ››使用jquery是新tab形式
- ››使用QUnit进行Javascript单元测试
- ››使用UITextFieldDelegate来隐藏键盘
- ››使用公式提取Excel中的日期后发现格式不对
- ››Visual Studio2005中Smart Device的问题
- ››使用SQL Azure 的BI 解决方案
- ››使用PLSQL Developer工具导出sql文件
更多精彩
赞助商链接