我正在按照 nCipher 示例将对称密钥存储在 HSM 中并从 java 程序中使用。
KeyGenerator kg = KeyGenerator.getInstance("AES", "nCipherKM");
SecretKey k = kg.generateKey();
ks.setKeyEntry("MyAESKey", k, null, null);
然后我调用以下方法将密钥保存在安全世界中。我被告知我应该能够在 KeySafe 中看到它们。
FileOutputStream out = new FileOutputStream("keystore.dat");
ks.store(out, null);
out.close();
我最终在 KeySafe 中得到了两个键而不是一个,并且键名与我使用的别名无关。
key_jcecsp_4912eadb0f19581317f02ce427b5f1ca3c872ef3-key-bb6328f32b6fbcae5787dde37640b37eb02ed97e
和
key_jcecsp_4912eadb0f19581317f02ce427b5f1ca3c872ef3
我有三个问题:
- 即使我给了一个很好的别名,例如“MyAESKey”,密钥也会以某种长的 oid 出现。如何让它在 KeySafe 中以正确的名称出现?
- 为什么我得到 2 个条目而不是 1 个?哪一个是关键?
- “keystore.dat”的意义是什么 - 为什么我不直接与 C:\ProgramData\nCipher\Key Management Data\local 下的密钥文件交互?
谢谢!
吠陀