我有一个类的加密在Microsoft的Visual C ++开发6.0,并且可以正常工作。 我迁移代码的Microsoft Visual Studio 2008中,这一类的工作,但有不同的行为。
当我通过一个特定的字符串进行加密,以在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);
提前致谢。