需求
使用Keytool生成.keystore文件,从KeyStore里面获取KeyPair,并打印base64的公私钥。
生成的.keystore文件的密码为:123456,别名为:aliasName。
代码
获取KeyStore中KeyPair的方法:
public static KeyPair getKeyPairFromKeyStore(KeyStore keyStore, String alias, char[] password) {
try {
Key key = keyStore.getKey(alias, password);
if (key instanceof PrivateKey) {
Certificate cert = keyStore.getCertificate(alias);
PublicKey publicKey = cert.getPublicKey();
return new KeyPair(publicKey, (PrivateKey)key);
}
} catch (Exception e) {
System.out.println("KeyStore获取KeyPair出错");
e.printStackTrace();
}
return null;
}
main方法如下:
public static void main(String[] args) {
try {
char[] password = "123456".toCharArray();
FileInputStream fis = new FileInputStream("D:/keytools_cert/test.keystore");
KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(fis, password);
//获取KeyPair
KeyPair keyPair = getKeyPairFromKeyStore(keyStore, "aliasName", password);
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();
//公私钥转化为base64打印控制台
System.out.println("privateKey:\n" + Base64.getEncoder().encodeToString(privateKey.getEncoded()));
System.out.println("publicKey:\n" + Base64.getEncoder().encodeToString(publicKey.getEncoded()));
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
说明
先将文件转化为FileInputStream,然后用KeyStore的实例去加载;
getKeyPairFromKeyStore方法里面,私钥是通过:Key key = keyStore.getKey(alias, password);取到的,公钥是通过:Certificate cert = keyStore.getCertificate(alias);得到证书,然后从证书中获取公钥:PublicKey publicKey = cert.getPublicKey();。最后返回KeyPair。
本文介绍如何使用Java KeyTool生成.keystore文件,包括设置密码和别名,并从该文件中提取KeyPair,将公私钥转换为Base64格式进行输出。
678

被折叠的 条评论
为什么被折叠?



