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  
时间: 2024-10-31 17:12:20

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

java 读取jar包中的资源文件实例程序

1) ClassLoader是abstract的,不可能实例化对象,更加不可能通过ClassLoader调用上面两个方法.所以我们真正写代码的时候,是通过Class类中的getResource()和getResourceAsStream()方法,这两个方法会委托ClassLoader中的getResource()和getResourceAsStream()方法 .好了,现在我们重新写一段Resource代码,来看看上面那段费解的话是什么意思了: Java代码  代码如下 复制代码 package

java-求助!用Java读取dat文件并处理数据,输出!

问题描述 求助!用Java读取dat文件并处理数据,输出! a.dat文件: id,money k001,5 k002,21 k003,30 k004,40 k002,20 b.dat文件: id,money k002,30 k005,49 k007,50 用java读取以上两个dat文件,统计相同id名下的money总和,并输出c.dat文件. 解决方案 IO流,按行读取,字符串切割,map存储id和money,map中已经存在id则进行money累加,2个文件读取完成,输出map值到c.da

java读取URL 返回XML 文件1M 浏览器直接打开5秒钟 使用下面代码 却要50多秒 求大神指导

问题描述 Stringurl="解决方案二: 解决方案三: 解决方案四: 解决方案五: 解决方案六: 解决方案七:##";URLConnectionuc=null;InputStreamin=null;InputStreamReaderrd=null;List<MatchInfo>mList1=newArrayList<MatchInfo>();try{DatestratDate=newDate();uc=newURL(url).openConnection()

java 读取dbf文件-java读取dbf文件问题怎样解决使用javadbf.jar

问题描述 java读取dbf文件问题怎样解决使用javadbf.jar 使用javadbf.jar读取dbf文件只能读取到字段名和第一行记录,然后遇到com.linuxense.javadbf.DBFException: Failed to parse Number: multiple points错误怎么解决

Java读取文件内容的小例子

Java 提供 BufferedReader 类用来从流中读取字符串.FileReader 类用来读取文件.我们用这两个类来读取文件中的字符串. 下面是一个例子: import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class ReadFile{ public static void main(String[] args){ String path="c:/1.txt&

java读取properties文件的方法

  本文实例讲述了java读取properties文件的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 package com.t

java读取大文件简单实例

 这篇文章主要介绍了java读取大文件简单实例,有需要的朋友可以参考一下 我要从一个文本文件中提有用的数据  文本文件200多MB  是不是可以建一个缓存来把有用的数据一段一段的提出来,请问该怎么做?    JAVA中可以使用内存映射文件来操作大文件.  最大可达2GB.  下面是个简单的示例,更具体的自己看Java API DOCS或相关资料      代码如下: import java.io.*;  import java.nio.*;  import java.nio.channels.*

java读取properties文件

关键字: java读取properties配置文件 今天要将以前一个项目的数据连接改成从properties文件中配置.找了好久,网上也不少,可就是读取文件时总是找不到文件在哪(我放在classes目录下了).最后终于成功,记下,以做纪念. Java代码 package com.web.connection; import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.s

java读取服务器html文件带图片显示到前端

问题描述 java读取服务器html文件带图片显示到前端 html文件是通过word另存为生成的,存放位置不在web项目路径下,我现在通过文件流的方式读取html文件显示到浏览器,但图片无法显示出来,怎样解决呢? 解决方案 因为HTML文件也是文本文件,所以使用简单的字符流读取就可以了,而图片是二进制文件,需要字节流读取,可以使用ImageIO类(详细用法参照API文档)读取并写出图片,然后使用HTML的标签显示即可.当然这仅仅是解决思路之一.