Different types of keystore in Java -- JCEKS

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

JCEKS ย่อมาจาก Java Cryptography Extension KeyStore และเป็นรูปแบบ keystore อีกแบบหนึ่งสำหรับแพลตฟอร์ม Java การเก็บ keys ใน KeyStore อาจเป็นมาตรการเพื่อป้องกันไม่ให้ encryption keys ของคุณถูกเปิดเผย Java KeyStores เก็บ certificates และ keys แต่ละรายการอย่างปลอดภัย ซึ่งสามารถอ้างอิงได้โดย alias เพื่อใช้ในโปรแกรม Java

กระบวนการจัดเก็บและโหลด entries ต่างๆ ใน JCEKS คล้ายกับสิ่งที่ JKS ทำ ดังนั้นโปรดดูบทความ Different types of keystore in Java -- JKS เปลี่ยนชนิด keystore จาก JKS เป็น JCEKS ตามลำดับเมื่อเรียกใช้ KeyStore.getInstance()

ในโพสต์นี้ เราจะกล่าวถึงเฉพาะกระบวนการจัดเก็บ secret keys ใน keystore JCEKS เท่านั้น รายการ secret key จะถูกปิดผนึกและจัดเก็บไว้ใน keystore เพื่อปกป้องข้อมูล key โปรดระบุรหัสผ่านที่แข็งแกร่งเมื่อจัดเก็บรายการลงใน keystore

จัดเก็บ secret key

secret key สามารถจัดเก็บใน keystore 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();
}

โหลด secret key

secret key ที่จัดเก็บไว้สามารถดึงออกมาจาก keystore JCEKS ใน Java ได้ key ที่ดึงออกมาสามารถใช้ในการเข้ารหัส/ถอดรหัสข้อมูลได้ตามปกติ

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

สำหรับ keystores ชนิดต่างๆ โปรดดู Different types of keystore in Java -- Overview

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

A programmer in a room full of PMs