通过IAIK PKCS#11包装器生成AES密钥并显示其值

用户名

我想使用PKCS#11兼容的加密USB令牌生成AES密钥并在屏幕上显示其值。

为此,我想使用IAIK PKCS#11包装器。

我尝试通过IAIK软件包随附的示例生成密钥,但未成功。密钥已生成,但看不到密钥的任何值。我应该怎么做才能看到键值以便在屏幕上显示它?

这是我的代码:

Module pkcs11Module = null;
pkcs11Module = Module.getInstance("pkcs11.dll");

Session session = null;
pkcs11Module.initialize(null);

Slot[] slots = pkcs11Module.getSlotList(Module.SlotRequirement.TOKEN_PRESENT);

if (slots.length == 0) {
    output_.println("No slot with present token found!");
    throw new TokenException("No token found!");
}

Slot selectedSlot;
// slot 0
selectedSlot = slots[0];

Token token = selectedSlot.getToken();

session = token.openSession(Token.SessionType.SERIAL_SESSION, Token.SessionReadWriteBehavior.RW_SESSION, null, null);

session.login(Session.UserType.USER, "12345678".toCharArray());

Mechanism keyGenerationMechanism = Mechanism.get(PKCS11Constants.CKM_AES_KEY_GEN);

AESSecretKey aesKey = new AESSecretKey();
aesKey.getValueLen().setLongValue(new Long(32));

AESSecretKey aesKeyNew = (AESSecretKey) session.generateKey(keyGenerationMechanism, aesKey);
output_.println("the AES Key is: ");
output_.println(aesKeyNew.toString());

session.closeSession();
pkcs11Module.finalize(null);

结果如下:

the AES Key is: 
  Object Class: Secret Key
  Token: false
  Private: false
  Modifiable: true
  Label: <NULL_PTR>
  Key Type: AES
  ID: <NULL_PTR>
  Start Date: <NULL_PTR>
  End Date: <NULL_PTR>
  Derive: true
  Local: true
  Key Generation Mechanism: CKM_AES_KEY_GEN
  Allowed Mechanisms: <Attribute not present>
  Sensitive: false
  Encrypt: true
  Decrypt: true
  Sign: false
  Verify: false
  Wrap: true
  Unwrap: true
  Extractable: true
  Always Sensitive: false
  Never Extractable: true
  Check Value: <Attribute not present>
  Wrap With Trusted: <Attribute not present>
  Trusted: <Attribute not present>
  Wrap Template: <Attribute not present>
  Unwrap Template: <Attribute not present>
  Value (hex): <NULL_PTR>
  Value Length (dec): 0

有值(十六进制):我想在屏幕上看到并显示。它与密码令牌的特定配置有关吗?当我使用其他令牌时,我会看到此值。

马尔滕·博德威斯

根据您显示的内容,将PKCS#11属性CKA_SENSITIVE设置为false表示您应该能够查看该值。但是,令牌很可能不允许您提取值。这些令牌中的大多数并没有完全实现PKCS#11,而仅允许进行某些操作。如果这是真的,那么它应该是不可能的设置CKA_SENSITIVE为false,但仅此而已你...

我将跟踪令牌的制造商(或者,如果可能的话,开发商),并要求令牌实现的特定功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为nfast获取Java IAIK PKCS11包装器

来自分类Dev

通过PKCS#11获取CryptoAPI公钥

来自分类Dev

通过用pybind11包装C ++抽象类而出错

来自分类Dev

如何通过代码/脚本在Firefox中加载PKCS#11设备?

来自分类Dev

您可以通过PKCS#11将Windows证书存储区公开给Mozilla Firefox吗?

来自分类Dev

您可以通过PKCS#11将Windows证书存储区公开给Mozilla Firefox吗?

来自分类Dev

无法通过MailChimp API 3.0包装器获取Java Maleorang的数据-404错误

来自分类Dev

使用MSCAPI和IAIK的InvalidKeyException

来自分类Dev

使用MSCAPI和IAIK的InvalidKeyException

来自分类Dev

在JAVA中使用pkcs11包装器对XML进行签名

来自分类Dev

智能卡PKCS11 AES密钥生成失败

来自分类Dev

使用openssl的PKCS11密钥包装

来自分类Dev

使用openssl的PKCS11密钥包装

来自分类Dev

通过值传递而不是通过引用JavaScript闭包-是否有任何非包装技术?

来自分类Dev

如何通过npm TypeScript编译器生成JavaScript包

来自分类Dev

使用PKCS#11将私钥和公钥包装在一起

来自分类Dev

通过WebCryptoAPI而不是通过浏览器化的节点加密模块在浏览器中生成ECDH密钥

来自分类Dev

无法通过dnssec-keygen生成密钥

来自分类Dev

通过包装器声明朋友类模板

来自分类Dev

通过Java API的包装器Scala API

来自分类Dev

通过Java API的包装器Scala API

来自分类Dev

通过宏生成属性值

来自分类Dev

通过参考VS通过值

来自分类Dev

如何通过密钥从Json收集值

来自分类Dev

变量的值不通过调试器显示

来自分类Dev

如何通过动态生成密钥在php中的会话数组中添加多个值

来自分类Dev

如何通过预定义短语和盐值在IOS中生成哈希密钥?

来自分类Dev

在某些点通过其值获得功能

来自分类Dev

通过其值转换表中的列

Related 相关文章

  1. 1

    为nfast获取Java IAIK PKCS11包装器

  2. 2

    通过PKCS#11获取CryptoAPI公钥

  3. 3

    通过用pybind11包装C ++抽象类而出错

  4. 4

    如何通过代码/脚本在Firefox中加载PKCS#11设备?

  5. 5

    您可以通过PKCS#11将Windows证书存储区公开给Mozilla Firefox吗?

  6. 6

    您可以通过PKCS#11将Windows证书存储区公开给Mozilla Firefox吗?

  7. 7

    无法通过MailChimp API 3.0包装器获取Java Maleorang的数据-404错误

  8. 8

    使用MSCAPI和IAIK的InvalidKeyException

  9. 9

    使用MSCAPI和IAIK的InvalidKeyException

  10. 10

    在JAVA中使用pkcs11包装器对XML进行签名

  11. 11

    智能卡PKCS11 AES密钥生成失败

  12. 12

    使用openssl的PKCS11密钥包装

  13. 13

    使用openssl的PKCS11密钥包装

  14. 14

    通过值传递而不是通过引用JavaScript闭包-是否有任何非包装技术?

  15. 15

    如何通过npm TypeScript编译器生成JavaScript包

  16. 16

    使用PKCS#11将私钥和公钥包装在一起

  17. 17

    通过WebCryptoAPI而不是通过浏览器化的节点加密模块在浏览器中生成ECDH密钥

  18. 18

    无法通过dnssec-keygen生成密钥

  19. 19

    通过包装器声明朋友类模板

  20. 20

    通过Java API的包装器Scala API

  21. 21

    通过Java API的包装器Scala API

  22. 22

    通过宏生成属性值

  23. 23

    通过参考VS通过值

  24. 24

    如何通过密钥从Json收集值

  25. 25

    变量的值不通过调试器显示

  26. 26

    如何通过动态生成密钥在php中的会话数组中添加多个值

  27. 27

    如何通过预定义短语和盐值在IOS中生成哈希密钥?

  28. 28

    在某些点通过其值获得功能

  29. 29

    通过其值转换表中的列

热门标签

归档