Different types of keystore in Java -- JCEKS

  Pi Ke        2015-01-05 00:30:56       54,915        1          English  简体中文  繁体中文  ภาษาไทย  Tiếng Việt 

JCEKS 代表 Java 加密扩展密钥库,它是 Java 平台的一种替代密钥库格式。将密钥存储在密钥库中可以作为防止加密密钥泄露的一种措施。Java 密钥库安全地包含各个证书和密钥,这些证书和密钥可以通过别名在 Java 程序中引用。

在 JCEKS 中存储和加载不同条目的过程类似于 JKS 的过程。因此,请参考文章 Java 中不同类型的密钥库 -- JKS。调用 KeyStore.getInstance() 时,相应地将密钥库类型从 JKS 更改为 JCEKS。

在这篇文章中,我们只介绍在 JCEKS 密钥库中存储密钥的过程。密钥条目将被密封并存储在密钥库中以保护密钥数据。存储条目到密钥库时,请提供强密码。

存储密钥

密钥可以使用以下代码存储在 JCEKS 密钥库中。

try{
	KeyStore keyStore = KeyStore.getInstance("JCEKS");
	keyStore.load(null, null);
	
	KeyGenerator keyGen = KeyGenerator.getInstance("DES");
	keyGen.init(56);;
	Key key = keyGen.generateKey();
	
	keyStore.setKeyEntry("secret", key, "password".toCharArray(), null);
	
	keyStore.store(new FileOutputStream("output.jceks"), "password".toCharArray());
} catch (Exception ex) {
	ex.printStackTrace();
}

加载密钥

存储的密钥可以从 Java 中的 JCEKS 密钥库中提取。提取的密钥可以像平常一样用于加密/解密数据。

try{
	KeyStore keyStore = KeyStore.getInstance("JCEKS");
	keyStore.load(new FileInputStream("output.jceks"), "password".toCharArray());
	
	Key key = keyStore.getKey("secret", "password".toCharArray());
	
	System.out.println(key.toString());
} catch (Exception ex) {
	ex.printStackTrace();
}

输出结果是:

javax.crypto.spec.SecretKeySpec@fffe7b9b

有关不同类型的密钥库,请参考 Java 中不同类型的密钥库 -- 概述

JAVA  KEYSTORE  JCEKS  TUTORIAL 

           

  RELATED


  1 COMMENT


Anonymous [Reply]@ 2021-03-04 15:02:23

why using "password" twice just after you said "please use strong password" :(



  RANDOM FUN

IKEA Bookbook

IKEA 2015 Catalogue bookbook. Download a free copy or upload yourself to IKEA. Give you an advice, IKEA, be careful of the DOS attack. If you are in mainland China, please watch the video IKEA Bookbook. To be honest. A very creative design.It gets over 10 million visits in less than 15 days.

  SUPPORT US