当前位置: 首页 > 面试题库 >

如何使用java.security.KeyStore类存储和加载密钥

白弘伟
2023-03-14
问题内容

创建密钥后,如何使用Keystore类的方法存储密钥,以及如何加载密钥?


问题答案:

储存:

KeyStore ks = KeyStore.getInstance("JKS");
ks.setKeyEntry("keyAlias", key, passwordForKeyCharArray, certChain);
OutputStream writeStream = new FileOutputStream(filePathToStore);
ks.store(writeStream, keystorePasswordCharArray);
writeStream.close();

请注意,除非您通过,否则certChain可能为null PrivateKey

正在加载:

KeyStore ks = KeyStore.getInstance("JKS");
InputStream readStream = new FileInputStream(filePathToStore);
ks.load(readStream, keystorePasswordCharArray);
Key key = ks.getKey("keyAlias", passwordForKeyCharArray);
readStream.close();

阅读javadocs

编辑:

请注意,如果要存储SecretKey或使用SunJCE提供程序的任何部分(Java密码学扩展),则需要将KeyStore类型设置为JCEKS。

KeyStore ks = KeyStore.getInstance("JCEKS");


 类似资料:
  • 堆栈:使用Ambari 2.1安装HDP-2.3.2.0-2950我正在执行以下步骤: 使用SQOOP将SQL server表加载到HDFS 在配置单元中创建外部表 在Sqoop导入中找不到相关的charset/nvarchar等选项 在配置单元中,是否可以盲目使用varchar/string代替nvarchar

  • 我已经创建了Azure VM,并在其中安装了我的Java应用程序,然后连接到WASB存储。 我添加了以下jars和core-site.xml来从Java应用程序访问WASB存储。 Azure-存储 Hadoop-Azure core-site.xml 如何使用加密密钥访问WASB存储。上面的配置有样例吗? 注意:-我将Azure VM直接连接到WASB存储,而不使用HDInsight集群。

  • 三个月前我得到了我应用程序的发布密钥。现在我格式化了我的计算机,当我用我的releasekey签名我的应用程序时,我得到了错误:java.lang.runtimeException:keystore Load:无效的keystore格式。 我应该如何解决这个错误? 该命令是:jarsigner-verbose-keystore“d:\releasekey.keystore”“d:\myapp.ap

  • 我在工作中被要求保护保存在Mysql数据库中的敏感数据。这个数据库包含几个表,其中一个表中的关键数据只能使用Django中的API来访问。对于这个API,只有一定数量的人可以访问它,因此他们将是唯一能够访问这个表中的数据的人。 因此,目前的问题是每个人都可以访问数据库和该表,因此我们决定使用AES在AES_ENCRYPT()和AES_DECRYPT()函数的帮助下加密该表中的所有数据(根据http

  • 问题内容: 我有一个Java属性对象,其中包含Web服务的身份验证信息。我需要对这些数据进行加密,但是我不知道该将加密密钥存储在何处才能保持安全。 关于加密和以安全方式检索数据的最佳实践是什么? 使用密钥库有什么好处吗? 问题答案: 您的问题很普遍。在Linux中,用户密码存储在纯文本文件中。尽管只存储了密码哈希,但是如果攻击者可以访问该文件,则使用脱机词典攻击可以很快发现一些密码。在这种情况下,

  • 我正在使用Xamarin android编写一个银行支付应用程序,该应用程序存储用户卡信息。我正在寻找一种安全可靠的存储数据的方法。我唯一发现的是下面的链接,该链接存储的帐户信息对我来说是无用的: https://developer.xamarin.com/recipes/cross-platform/xamarin-forms/general/store-credentials/