Different types of keystore in Java -- JCEKS

  Pi Ke        2015-01-05 00:30:56       54,220        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

What the fuck JavaScript

see more https://github.com/denysdovhan/wtfjs#-examples