//1.keytool工具生成keystore文件
keytool -genkey -alias csdn -keypass 123456 -keyalg RSA -keysize 1024 -validity 3650 -keystore D:/csdn_server.keystore -storepass 888999


//講文件復制到工程中

//代碼段
package com.demo.test;import java.io.FileInputStream;import java.security.KeyStore;import java.security.PRivateKey;import java.security.PublicKey;import java.security.cert.Certificate;import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * @author Administrator * 使用以下命令生成keystore文件 * alias:別名csdn * keypass:別名密碼 123456 * storepass:秘鑰庫的密碼:888999 * keytool -genkey -alias csdn -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/csdn_server.keystore -storepass 888999 */public class TestKeyStore { public static void main(String[] args) throws Exception { //讀取keystore文件轉換為keystore密鑰庫對象 FileInputStream fis = new FileInputStream("/csdn_server.keystore"); //因為生成證書的類型為JKS 也有其他的格式 KeyStore keyStore = KeyStore.getInstance("JKS"); //該密鑰庫的密碼"888999" String storepass="888999"; keyStore.load(fis, storepass.toCharArray()); fis.close(); // 從keystore中讀取證書和私鑰 String alias = "csdn";//別名 String keypass = "123456"; //別名密碼 Certificate certificate = keyStore.getCertificate(alias); //讀取公鑰對象 PublicKey publicKey = certificate.getPublicKey(); System.out.println("提取的公鑰為___:/n"+encodeBase64(publicKey.toString())); //讀取私鑰對象 PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias,keypass.toCharArray()); System.out.println("提取的私鑰為___:/n"+encodeBase64(privateKey.toString())); } // 對字符密碼加密 public static String encodeBase64(String str) throws Exception { // 1.將傳遞進來的字符串密碼 轉換為字節數組 放到base64加密工具里 生產出一個加了密的字符串 String base64Str = new BASE64Encoder().encode(str.getBytes("UTF-8")); return base64Str; } // 對密文字符串解密 public static String decodeBase64(String base64Str) throws Exception { // 根據加了密的字符串 使用base64的解密工具里 獲取原來的明文字符串密碼 byte[] bytes = new BASE64Decoder().decodeBuffer(base64Str); String generalStr = new String(bytes, "UTF-8"); return generalStr; } }//運行結果
新聞熱點
疑難解答