我正在为HSM实现JCE提供程序

JCE中是否有任何机制可以指定密钥生成类型
例如:会话密钥或永久密钥

     KeyGenerator keygen = KeyGenerator.getInstance("AES");
     keygen.init(128);
     key = keygen.generateKey();


我需要类似的东西:

     key = keygen.generateKey(flag);
     flag = 0/1 session key/permanent key
     keygen.deleteKey(); //to delete permanent key

最佳答案

不,无法指定会话密钥或永久密钥。

但是您当然可以定义自己的AlgorithmParameterSpec,以在init方法中使用并在engineInit中的KeyGeneratorSpi中实现。AlgorithmParameterSpec可以指示某些内容是会话密钥还是永久密钥,并且可以包含算法的参数(即为AES指定密钥大小的参数),以及检索密钥大小的另一种可能的方法(因为密钥大小似乎没有任何特定的AlgorithmParameterSpec)。

您可能应该让您的提供者默认使用会话密钥。通常,密钥值会丢失,除非将其存储在KeyStore中或编码为文件。

09-25 20:39