C++ 使用C+;进行AES加密时出错+;

C++ 使用C+;进行AES加密时出错+;,c++,encryption,aes,C++,Encryption,Aes,我已经完成了ENCRYPT\u算法asCALG\u RC4。代码运行良好。当我将ENCRYPT_算法更改为CALG_AES_256时,它失败了 if(CryptAcquireContext( &hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) 及 失败,错误号为0x80090016和0x8009000f 我想执行AES 256加密,还想包括SH

我已经完成了
ENCRYPT\u算法
as
CALG\u RC4
。代码运行良好。当我将
ENCRYPT_算法
更改为
CALG_AES_256
时,它失败了

if(CryptAcquireContext(
    &hCryptProv, 
    NULL, 
    MS_ENHANCED_PROV, 
    PROV_RSA_FULL, 
    CRYPT_VERIFYCONTEXT))

失败,错误号为
0x80090016
0x8009000f

我想执行AES 256加密,还想包括SHA-512哈希以及加密
CALG_SHA_512
。我需要修改哪些内容


注意:我不想使用任何第三方API来执行此操作。

尝试在第一次调用中将
CRYPT\u VERIFYCONTEXT
替换为
CRYPT\u NEWKEYSET
(建议这样做)。在第二个调用中,我认为错误意味着“对象已经存在”,您必须以某种方式使用
CRYPT\u DELETEKEYSET
删除它。
   if(!CryptDeriveKey(
          hCryptProv, 
          ENCRYPT_ALGORITHM, 
          hHash, 
          KEYLENGTH, 
          &hKey))