java.crypto密钥存储另存为空文件
我创建了一个KeyStore对象,并在其中存储了一个SecretKey。然后我将密钥库保存到文件中。当我试图读取密钥库时,它是空的。为什么是空的java.crypto密钥存储另存为空文件,java,cryptography,Java,Cryptography,我创建了一个KeyStore对象,并在其中存储了一个SecretKey。然后我将密钥库保存到文件中。当我试图读取密钥库时,它是空的。为什么是空的 KeyStore keystore = KeyStore.getInstance("JCEKS"); char[] password = "password".toCharArray(); keystore.load(null,password); KeyGenerator keygen = KeyGenerator.getInstance("AES
KeyStore keystore = KeyStore.getInstance("JCEKS");
char[] password = "password".toCharArray();
keystore.load(null,password);
KeyGenerator keygen = KeyGenerator.getInstance("AES");
keygen.init(256);
SecretKey key = keygen.generateKey();
KeyStore.SecretKeyEntry ske = new KeyStore.SecretKeyEntry(key);
KeyStore.ProtectionParameter pp = new KeyStore.PasswordProtection(password);
keystore.setEntry("superman", ske, pp);
FileOutputStream fos = new FileOutputStream(Directory.KEY);
keystore.store(fos,password);
fos.close();
您正在从同一文件加载密钥库吗?您发布的代码可以工作,添加一个加载文件的代码后,我会得到一个包含正确条目的新密钥库。是的,我是。我还访问了密钥库文件本身并单击了属性,它说它是零字节。当我加载密钥库并尝试访问我的密钥时,会出现以下错误:java.security.InvalidKeyException:没有安装的提供程序支持此密钥:nullReally请在代码中重新检查将密钥库保存到Directory.key的文件名以及加载的文件名。问题中提供的代码起作用,要么加载代码不起作用,要么使用的不是同一个文件。