使用Visual C++创建Crypto加/解密组件
2008-11-13 19:30:27 来源:WEB开发网// Place Encrypted Data into a VARIANT SAFEARRAY of VARIANT BYTE
SAFEARRAYBOUND rgsabound[] = {dwCryptDataLen, 0};
psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound);
VARIANT* rgElems;
SafeArrayAccessData(psa, (LPVOID*)&rgElems);
for(DWORD i=0;i<dwCryptDataLen;i++){
VariantInit(&rgElems[i]);
rgElems[i].vt = VT_UI1;
rgElems[i].uiVal = pbData[i];
}
SafeArrayUnaccessData(psa);
VariantInit(vCipherText);
vCipherText->vt = (VT_ARRAY | VT_VARIANT) ;
vCipherText->parray = psa;
稍微整理一下,搞定。
// Destroy session key.
if(hKey) CryptDestroyKey(hKey);
// Release provider handle.
if(hProv) CryptReleaseContext(hProv, 0);
return S_OK;
实现解密方法
首先定义变量。
STDMETHODIMP CCrypto::Decrypt(VARIANT vCipherText,
BSTR bstrPassword,
BSTR *bstrPlainText)
{
HCRYPTPROV hProv = 0;
HCRYPTHASH hHash = 0;
HCRYPTKEY hKey = 0;
SAFEARRAY* psa;
VARIANT HUGEP *pVar;
BYTE *pbData;
BYTE *pbPassword;
long lBound, uBound;
DWORD dwCryptDataLen = 0;
DWORD dwOffset = 0;
DWORD dwError = 0;
char buffer[200];
USES_CONVERSION;
同样的原因,我们要调用RevertToSelf() RevertToSelf();
- ››使用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文件
更多精彩
赞助商链接