//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;
}
}
//运行结果