You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AES GCM加密报错CKR_MECHANISM_PARAM_INVALID求助(PKCS11Interop v5+Azure HSM)

使用PKCS11Interop v5结合Azure云HSM执行AES-GCM加密时遇CKR_MECHANISM_PARAM_INVALID错误

调用C_EncryptInit时返回错误:

Method C_EncryptInit returned CKR_MECHANISM_PARAM_INVALID

已测试多组ivBit与tagBit组合:

ivBitstagBitsaadBytes
12UL128ULnull / 带值
96UL128ULnull / 带值
0UL128ULnull / 带值
16UL0ULnull / 带值
0UL0ULnull / 带值

已验证以下内容:

  • HSM支持CKM_AES_GCM
  • 加密/解密flag已启用
  • AES密钥大小有效
  • 平台为x64
  • 相同密钥/会话下AES-CBC可正常工作

报错的AES-GCM加密示例代码

using Net.Pkcs11Interop.Common;
using Net.Pkcs11Interop.HighLevelAPI;
using System;
using System.Linq;
using System.Security.Cryptography;
using System.Text;

class Program
{
    private const string Pkcs11Library =
        @"C:\Program Files\Microsoft Azure Cloud HSM Client SDK\libs\pkcs11\azcloudhsm_pkcs11.dll";

    static void Main()
    {
        using (var pkcs11 = new Pkcs11(Pkcs11Library, AppType.MultiThreaded))
        {
            var slot = pkcs11.GetSlotList(SlotsType.WithTokenPresent).First();

            using (var session = slot.OpenSession(SessionType.ReadWrite))
            {
                session.Login(CKU.CKU_USER, "password");

                // AES key already exists on HSM
                var key = session.FindAllObjects(new List<ObjectAttribute>
                {
                    new ObjectAttribute(CKA.CKA_LABEL, "TestAESKey")
                }).First();

                byte[] plaintext = Encoding.UTF8.GetBytes("test");

                byte[] iv = new byte[12];

                using (var rng = RandomNumberGenerator.Create())
                {
                    rng.GetBytes(iv);
                }

                var gcmParams =
                    session.Factories.MechanismParamsFactory.CreateCkGcmParams(
                        iv,
                        96UL,
                        null,
                        128UL);

                var mechanism =
                    session.Factories.MechanismFactory.Create(
                        CKM.CKM_AES_GCM,
                        gcmParams);

                byte[] encrypted =
                    session.Encrypt(
                        mechanism,
                        key,
                        plaintext);

                Console.WriteLine(Convert.ToBase64String(encrypted));
            }
        }
    }
}

可正常运行的AES-CBC对比代码

using Net.Pkcs11Interop.Common;
using Net.Pkcs11Interop.HighLevelAPI;
using System;
using System.Linq;
using System.Security.Cryptography;
using System.Text;

class Program
{
    private const string Pkcs11Library =
        @"C:\Program Files\Microsoft Azure Cloud HSM Client SDK\libs\pkcs11\azcloudhsm_pkcs11.dll";

    static void Main()
    {
        using (var pkcs11 = new Pkcs11(Pkcs11Library, AppType.MultiThreaded))
        {
            var slot = pkcs11.GetSlotList(SlotsType.WithTokenPresent).First();

            using (var session = slot.OpenSession(SessionType.ReadWrite))
            {
                session.Login(CKU.CKU_USER, "password");

                // AES key already exists on HSM
                var key = session.FindAllObjects(new List<ObjectAttribute>
                {
                    new ObjectAttribute(CKA.CKA_LABEL, "TestAESKey")
                }).First();

                byte[] plaintext = Encoding.UTF8.GetBytes("test");

                var iv = new byte[16];

                using (var rng = RandomNumberGenerator.Create())
                {
                    rng.GetBytes(iv);
                }

                var mechanism =
                    session.Factories.MechanismFactory.Create(
                        CKM.CKM_AES_CBC_PAD,
                        iv);

                byte[] encrypted =
                    session.Encrypt(
                        mechanism,
                        key,
                        plaintext);

                Console.WriteLine(Convert.ToBase64String(encrypted));
            }
        }
    }
}

是否有人在PKCS11Interop v5或Azure云HSM上遇到过CKM_AES_GCM对应的CKR_MECHANISM_PARAM_INVALID错误?恳请指导。

内容的提问来源于stack exchange,提问作者user3869349

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 02:14:52