我有一個在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);
提前致謝。