我有一个在Microsoft Visual C++ 6.0中开发的加密类,它工作正常。我将代码迁移到Microsoft Visual Studio 2008,这个类正在工作,但具有不同的行为。VC++ 6.0和VS 2008之间的Windows加密服务差异
当我传递一个特定的字符串进行加密时,Visual C++ 6.0中编译代码中生成的加密结果与Visual Studio 2008中不同,它不应该发生。
任何人都可以帮助我理解为什么会发生这种情况吗?使用Windows服务的
加密功能:
HCRYPTPROV hProv;
HCRYPTHASH hHash;
HCRYPTHASH hKey;
CString strDataKey;
DWORD dwSize;
DWORD dwSizeEncrypted;
BYTE * aszEncryptedBuffer;
.........(其它代码.....).......
CryptAcquireContext (& hProv, NULL, MS_STRONG_PROV, PROV_RSA_FULL, 0);
CryptCreateHash (hProv, CALG_MD5, 0, 0, & hHash);
CryptHashData (hHash, (const unsigned char *) strDataKey, dwSize, 0);
CryptDeriveKey (hProv, CALG_RC2, hHash, CRYPTDERIVEKEY_FLAG, & hKey);
aszEncryptedBuffer = new BYTE[dwSizeEncrypted];
memcpy(aszEncryptedBuffer,"Data to be encrypted",dwSize);
CryptEncrypt (hKey, 0, TRUE, 0, aszEncryptedBuffer, & dwSize, dwSizeEncrypted);
提前致谢。