使用 WinCrypt 和 CryptImportKey 硬编码 AES-256 密钥

2024-03-10

我需要让 Win32 应用程序加载硬编码的 AES-256 密钥,最好使用 WinCrypt.h 方法。我的密钥位于 unsigned char[32] 中,但我找不到传递给 CryptImportKey 的密钥 blob 的正确格式。一切似乎都给我无效的参数错误。有什么办法可以做到这一点吗?

(同样重要的是如何在 WinCrypt 中设置 IV。我根本不知道如何做到这一点)


解决了。我使用了错误的 bType,并使用 256 作为 keySize,而不是 32。

BYTE myPrivateKey[] = 
    {1,2,3,4,5,6,7,8,9,10,
    11,12,13,14,15,16,17,18,19,20,
    21,22,23,24,25,26,27,28,29,30,
    31,32};
BYTE myIV[] = 
    {1,2,3,4,5,6,7,8,9,10,
    11,12,13,14,15,16};

struct aes256keyBlob
{
    BLOBHEADER hdr;
    DWORD keySize;
    BYTE bytes[32];
} blob;

blob.hdr.bType = PLAINTEXTKEYBLOB;
blob.hdr.bVersion = CUR_BLOB_VERSION;
blob.hdr.reserved = 0;
blob.hdr.aiKeyAlg = CALG_AES_256;
blob.keySize = 32;
memcpy(blob.bytes, myPrivateKey, 32);

HCRYPTKEY hKey;
if (CryptImportKey(hCryptProv, (BYTE*)&blob, sizeof(aes256keyBlob), NULL, 0, &hKey))
{
    if(CryptSetKeyParam(hKey, KP_IV, myIV, 0))
    {
        //do decryption here
    }
    else{/*error*/}

    CryptDestroyKey(hKey);
}
else{/*error*/}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 WinCrypt 和 CryptImportKey 硬编码 AES-256 密钥 的相关文章

  • 如何在 Java 中创建安全的随机 AES 密钥?

    使用标准 JDK 在 Java 中生成安全 随机 AES 密钥的推荐方法是什么 在其他帖子中 我发现了这一点 但是使用SecretKeyFactory可能是一个更好的主意 KeyGenerator keyGen KeyGenerator g
  • ed25519.公开结果不同

    使用包https github com golang crypto tree master ed25519 https github com golang crypto tree master ed25519我正在尝试获取给定私钥的公钥 这
  • java.lang.IllegalArgumentException:字符串 curve25519 不是 OID bouncycastle 1.52

    我正在尝试使用曲线 25519 的 java bouncy castle 1 52 实现生成密钥对 这给了我 java lang IllegalArgumentException 字符串 curve25519 不是 OID 这是我的代码 p
  • PHP使用RSA私钥解密数据

    我有一个程序 使用 C rsa 公钥加密密码 输出字节数组 为了让我轻松传输它并维护数据 我将字节直接转换为十六进制字符串 现在这就是我遇到问题的地方 我将发布数据发送到我的脚本 现在不确定将其转换为什么以及如何解密它 我正在尝试使用htt
  • 使用 .NET 加密 API 进行 RSA 盲签名?

    我想实施一个RSA 盲签名 http en wikipedia org wiki Blind signature Blind RSA signatures在 NET中 有什么办法可以使用标准System Security Cryptogra
  • RandomNumberGenerator 与 RNGCryptoServiceProvider

    根据 MSDN 文档随机数生成器 http msdn microsoft com en us library system security cryptography randomnumbergenerator 28v VS 71 29 a
  • 如何编写恒定时间函数将最高有效位复制到所有位

    我想用 C 语言编写一个函数 它采用以下的 MSBuint8 t 如果已设置 则返回0xFF如果不0x00 简而言之 它返回一个整数 其中所有位都设置为与 MSB 相同的值 但我想以完全恒定的时间方式来完成它 没有分支 没有数组偏移 只是数
  • openssl-使用密钥和 IV 解密 Base64 字符串

    我正在尝试解密已在 openssl 中使用 aes256 加密的 base64 字符串 我获得了会话密钥和 IV 它们是用我的密钥加密的 我将它们转换为十六进制 以便可以使用以下 openssl 命令 openssl enc d aes25
  • 检查 canAuthenticateAgainstProtectionSpace 中的公钥

    我被要求根据已知值检查公钥canAuthenticateAgainstProtectionSpace 委托回调NSURLConnection http developer apple com library mac documentatio
  • 使用 Android 实现 Bouncy Castle 密码算法

    我如何使用 Bouncy Castle 提供程序来实现 Serpent 和 Twofish 等算法 因为 Sun 的提供程序根本不实现这些 我知道当多个提供商可以实现相同的算法时 您可以从排名最高的提供商 即 Sun 提供商 获得实现 如果
  • 兼容 C# 和 javascript 的 AES 加密和解密

    我正在尝试用 C 和 Javascript 编写两个类 我可以在整个项目中使用它们在交换数据时使用 AES 加密或解密数据 使用 AES 我将 Salt 32 字节 和 IV 16 字节 嵌入到加密结果中 这在测试时分别适用于这两个类 将
  • iPhone 上 NSString 的 AES 加密

    任何人都可以为我指明正确的方向 以便能够加密字符串 并返回带有加密数据的另一个字符串吗 我一直在尝试使用 AES256 加密 我想编写一种需要两个 NSString 实例的方法 一个是要加密的消息 另一个是用于加密它的 密码 我怀疑我必须生
  • 如何将 AES CCM 与 Bouncycastle JCE 提供程序一起使用 - CCMParameters

    是否可以使用JCE来执行CCM 我在互联网上看到很多使用非 JCE bouncycastle 类的示例 特别是 我看到他们调用 init 并传入 CCMParameters 对象 问题是 这个 CCMParameters 对象不是从 Alg
  • 许可证密钥模式检测? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这不是真实情况 请忽略您可能认为适用的法律问题 因为它们并不适用 假设我有一组 200 个已知的有效许可证密钥 用于假设的软件许可算法
  • AES加密结果只有部分数据正确(使用mcrypt lib)

    我从以下位置下载了 AES 加密的示例代码https gist github com 2436364 https gist github com 2436364我修改了部分源代码以满足我的项目要求 如下 include
  • 无需动态分配的RSA实现

    典型的 RSA 实现包含一个多精度整数库 典型的多精度整数库使用动态分配将大整数表示为大小合适的机器字数组 我预计当使用多精度整数仅使用 RSA 2048 来加密或解密已知长度的消息 通常是对称加密密钥 时 可能会遇到数学整数的限制 并且它
  • JWT Web 令牌加密 - SecurityAlgoritms.HmacSha256 与 SecurityAlgoritms.HmacSha256Signature

    用于基于令牌的身份验证Microsoft IdentityModel Tokens提供了可用于创建的安全算法列表SigningCredentials string secretKey MySuperSecretKey byte keybyt
  • AES 在汇编中的实现 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 大家好 我正在尝试构建一个代码来演示
  • 使用 cryptoapi CryptImportKey 导入公钥时出错

    我想将公钥 blob 导入到 CSP 但发生了错误 BYTE pbData 0xEB 0x2A 0x38 0x56 0x86 0x61 0x88 0x7F 0xA1 0x80 0xBD 0xDB 0x5C 0xAB 0xD5 0xF2 0x
  • IOS 上图像的加密/解密

    我们正在使用加密 解密和 UIIMAGE 如果我们加密和解密 UIIMAge 而不保存到 iphone 画廊中 它工作正常 但如果我们加密 保存到画廊中 将 加密的图像 加载到应用程序中 然后解密它效果不好 我们使用这个函数来加密 解密 保

随机推荐