c++ - 为什么 CryptImportKey 失败了?

标签 c++ encryption cryptography aes cryptoapi

我正在尝试使用 Windows CryptoAPI 函数进行 AES 加密。

我想将自己的 key 提供给 CryptEncrypt 函数,但我的 CryptImportKey 函数失败了

这是我的代码:

    HCRYPTPROV hProv  = NULL;
    HCRYPTKEY hKey    = NULL;
    DWORD dwBlobLen;
    PBYTE pbKeyBlob = NULL;
    pbKeyBlob = (PBYTE)"1a1dc91c907325c6";

    if(!CryptAcquireContext(&hProv, NULL,NULL, PROV_RSA_AES,CRYPT_VERIFYCONTEXT))
    {
        printf(" Error in AcquireContext 0x%08x \n",GetLastError());
    }    
    if (!CryptImportKey(hProv,pbKeyBlob,sizeof(pbKeyBlob),0,CRYPT_EXPORTABLE,&hKey ))
    {
        printf("Error 0x%08x in importing the Des key \n",GetLastError());
    }

最佳答案

如果你想使用 AES,你的 key 应该至少有 16 个字节长,你有 8 个字节长的 key 。 AES 使用 128、192 或 256 位长的 key 。

关于c++ - 为什么 CryptImportKey 失败了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29622839/

相关文章:

java - Arduino-处理双向通讯无法通过串行接收数据

c++ - 从 GUI 应用程序运行带有 CreateProcess 的 .bat 脚本会导致 "The filename, directory name, or volume label syntax is incorrect."错误

java - Java 5 中的 AES 256 加密支持

c++ - 没有绝对路径无法访问数据库

c++ - 基于模板参数的条件编译时包含/排除代码?

Java密码加密

java - AES - 用 Ja​​va 简单加密,用 openssl 解密

java - AES 加密,解密文件中出现额外的垃圾字符

python - 如何求椭圆曲线的最小 y 坐标 y^2 = x^3 +

c++ - SBox 的线性近似表计算