java 读取使用keytool生产的keystore文件-阿里云开发者社区

开发者社区> 开发与运维> 正文

java 读取使用keytool生产的keystore文件

简介:

windows 环境下,使用keytool 生产keystore文件

keytool -genkeypair -keyalg RSA -keysize 1024 -sigalg SHA1withRSA -validity 36000 -alias www.kunlunsoft.com -storepass abcdefg -keystore zlex.keystore -dname "CN=localhost, OU=zlex,O=zlex, L=BJ, ST=BJ, C=CN"

说明:-keyalg :指定key的加密算法

-sigalg:指定签名算法;

-storepass:指定key的密码

注意keystore 密码和主密码必须相同

操作结果如下:

 

上述命令会生产一个文件zlex.keystore

keystore文件中既包含公钥,也包含私钥。

使用Java 读取zlex.keystore 文件:

用于保存私钥和公钥的bean:

 

Java代码  收藏代码
  1. package com.common.bean;  
  2.   
  3. import java.io.Serializable;  
  4. import java.security.PrivateKey;  
  5. import java.security.PublicKey;  
  6.   
  7. /*** 
  8.  *  
  9.  * @author huangwei 
  10.  * @since 2013-10-28 
  11.  */  
  12. public class PrivPubKeyBean implements Serializable {  
  13.   
  14.     private static final long serialVersionUID = 1888415926054715509L;  
  15.     /*** 
  16.      * 私钥 
  17.      */  
  18.     private PrivateKey privKey;  
  19.     /*** 
  20.      * 公钥 
  21.      */  
  22.     private PublicKey publKey;  
  23.     /*** 
  24.      * 签名算法 
  25.      */  
  26.     private String sigAlgName;  
  27.     public PrivateKey getPrivKey() {  
  28.         return privKey;  
  29.     }  
  30.     public void setPrivKey(PrivateKey privKey) {  
  31.         this.privKey = privKey;  
  32.     }  
  33.     public PublicKey getPublKey() {  
  34.         return publKey;  
  35.     }  
  36.     public void setPublKey(PublicKey publKey) {  
  37.         this.publKey = publKey;  
  38.     }  
  39.     public String getSigAlgName() {  
  40.         return sigAlgName;  
  41.     }  
  42.     public void setSigAlgName(String sigAlgName) {  
  43.         this.sigAlgName = sigAlgName;  
  44.     }  
  45.       
  46.       
  47. }  

 

 

读取keystore文件获取私钥和公钥:

 

Java代码  收藏代码
  1. /*** 
  2.      *  
  3.      * @param keyStorePath 
  4.      * @param password 
  5.      * @param alias 
  6.      * @return 
  7.      * @throws Exception 
  8.      */  
  9.     public static PrivPubKeyBean getPrivPubKeyBean(String keyStorePath,String password,String alias) throws Exception{  
  10.         PrivPubKeyBean privPubKeyBean=new PrivPubKeyBean();  
  11.         // 获得密钥库  
  12.         KeyStore ks =SystemUtil. getKeyStore(keyStorePath, password);  
  13.         // 获得私钥  
  14.         PrivateKey privateKey = (PrivateKey) ks.getKey(alias, password.toCharArray());  
  15.         privPubKeyBean.setPrivKey(privateKey);  
  16.           
  17.         // 获得证书  
  18.         X509Certificate x509Certificate = (X509Certificate) ks.getCertificate(alias);  
  19.         PublicKey pubKey=x509Certificate.getPublicKey();  
  20.         privPubKeyBean.setPublKey(pubKey);  
  21.         privPubKeyBean.setSigAlgName(x509Certificate.getSigAlgName());  
  22.         return privPubKeyBean;  
  23.     }  

 

 

测试:

 

Java代码  收藏代码
  1. @Test  
  2.     public void test_03() {  
  3.         try {  
  4.             String message = "whuang";  
  5.             String keyStorePath = "d:\\Temp\\a\\a\\ca\\zlex.keystore";  
  6.             String password = "abcdefg";  
  7.             String alias = "www.kunlunsoft.com";  
  8.             PrivPubKeyBean privPubKeyBean = SystemUtil.getPrivPubKeyBean(  
  9.                     keyStorePath, password, alias);  
  10.             byte[] result = SystemUtil.encrypt(message,  
  11.                     privPubKeyBean.getPublKey());  
  12.             byte[] deResult = SystemUtil.decrypt(result,  
  13.                     privPubKeyBean.getPrivKey());  
  14.             System.out.println(new String(deResult));  
  15.         } catch (Exception e) {  
  16.             e.printStackTrace();  
  17.         }  
  18.   
  19.     }  

 运行结果:whuang

 

Java代码  收藏代码
  1. SystemUtil 见附件,路径:src\main\java\com\common\util\SystemUtil.java  

版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章