在Java中使用密钥库存储AES密钥 [英] Storing AES Secret key using keystore in java

查看:977
本文介绍了在Java中使用密钥库存储AES密钥的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Java密钥库存储AES加密的秘密密钥。

I am using Java keystore to store the secret key for AES encryption.

final String strToEncrypt = "Hello World";
KeyGenerator kg = KeyGenerator.getInstance("AES");
kg.init(128);
SecretKey sk = kg.generateKey();
String secretKey = String.valueOf(Hex.encodeHex(sk.getEncoded()));   
//Storing AES Secret key in keystore
KeyStore ks = KeyStore.getInstance("JCEKS");
char[] password = "keystorepassword".toCharArray();
java.io.FileInputStream fis = null;
try {
  fis = new java.io.FileInputStream("keyStoreName");
  ks.load(fis, password);
} finally {
  if (fis != null) {
    fis.close();
  }

  KeyStore.ProtectionParameter protParam = 
    new KeyStore.PasswordProtection(password);

  KeyStore.SecretKeyEntry skEntry = new KeyStore.SecretKeyEntry(sk);
  ks.setEntry("secretKeyAlias", skEntry, protParam);

但是我正在获得以下异常。

But i am getting following Exception.


线程main中的异常java.security.KeyStoreException:未初始化的密钥库

java.security.KeyStore.setEntry(Unknown Source)

Exception in thread "main" java.security.KeyStoreException: Uninitialized keystore
at java.security.KeyStore.setEntry(Unknown Source)

如何解决这个错误?感谢提前

How to fix this error? Thanks in advance

推荐答案

根据 KeyStore 文档,


在访问密钥库之前,必须加载

所以你正在加载KeyStore,但是如果一个 FileNotFoundException 发生在
fis = new java.io.FileInputStream(keyStoreName); ,因此如果文件不存在,我们加载KeyStore与 null 值,例如 ks.load(null,null);

so you are loading the KeyStore but what if a FileNotFoundException occures at fis = new java.io.FileInputStream("keyStoreName"); , hence if file does not exist we load the KeyStore with null values ,like , ks.load(null,null); .

这篇关于在Java中使用密钥库存储AES密钥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆