Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AES密钥生成模板中使用的CKA_值是多少?_C_Aes_Public Key Encryption_Pkcs#11 - Fatal编程技术网

AES密钥生成模板中使用的CKA_值是多少?

AES密钥生成模板中使用的CKA_值是多少?,c,aes,public-key-encryption,pkcs#11,C,Aes,Public Key Encryption,Pkcs#11,我正在尝试将safenet HSM与我们的应用程序集成。我正在用C语言编写程序。我指的是RSA实验室提供的PKCS11 v2.20 cryptoki标准文档。我需要生成一个AES 256位密钥。在定义密钥生成模板时,我不确定需要为CKA_值传递什么值。生成DES3密钥时,我没有提供此属性,因此我能够生成密钥 我搜索了CKA_标签的示例程序,但在C中找不到任何可靠的示例。我找到了两个使用CKA_值而不是CKA_值的Java程序。我不确定这是否有效 这是文档中给出的代码段。大多数网站仅以这个片段为例

我正在尝试将safenet HSM与我们的应用程序集成。我正在用C语言编写程序。我指的是RSA实验室提供的PKCS11 v2.20 cryptoki标准文档。我需要生成一个AES 256位密钥。在定义密钥生成模板时,我不确定需要为CKA_值传递什么值。生成DES3密钥时,我没有提供此属性,因此我能够生成密钥

我搜索了CKA_标签的示例程序,但在C中找不到任何可靠的示例。我找到了两个使用CKA_值而不是CKA_值的Java程序。我不确定这是否有效

这是文档中给出的代码段。大多数网站仅以这个片段为例。没有为数组值指定任何内容

CK_OBJECT_CLASS class = CKO_SECRET_KEY;
CK_KEY_TYPE keyType = CKK_AES;
CK_UTF8CHAR label[] = “An AES secret key object”;
CK_BYTE value[] = {...};
CK_BBOOL true = CK_TRUE;
CK_ATTRIBUTE template[] = {
{CKA_CLASS, &class, sizeof(class)},
{CKA_KEY_TYPE, &keyType, sizeof(keyType)},
{CKA_TOKEN, &true, sizeof(true)},
{CKA_LABEL, label, sizeof(label)-1},
{CKA_ENCRYPT, &true, sizeof(true)},
{CKA_VALUE, value, sizeof(value)}
};

CKA_值
是键的实际值。当您告诉HSM生成密钥时,它将根据您在密钥模板中传递的属性在硬件上为您生成密钥,并设置在
CKA\u值中生成的值。但是,该属性无法读取/提取,也无法在生成密钥时设置,因为HSM不允许您(直接)从软件中注入密钥,也不允许您(直接)从HSM中提取密钥


CKA\u VALUE\u LEN
是您可以告诉HSM生成的密钥的长度。AES密钥的长度可以是128、192或256位。根据您想要的密钥大小,您可以将
CKA\u值\u LEN
设置为16、24或32(密钥大小为字节)。

如果不传递CKA\u值,我认为您会出错?怎么了?我想不出AES-256需要什么而DES3不需要——这里的键只是随机字节,不是吗?也就是说,这里哪个参数指定了256位?这里哪个参数指定了256位>>这就是我曾经的疑问,并且尝试指定CKA_值。错误消失了。“永远都是新手”所指出的,现在对我来说是有意义的!谢谢@always\u a\u新手\u学习。“我试过了,并且能够生成一个密钥。”陈很高兴这有帮助。如果解决方案解决了您的问题,您可以将答案标记为已接受,这将有助于其他人解决同样的问题。