`

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

    博客分类:
  • Java
阅读更多

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:

 

package com.common.bean;

import java.io.Serializable;
import java.security.PrivateKey;
import java.security.PublicKey;

/***
 * 
 * @author huangwei
 * @since 2013-10-28
 */
public class PrivPubKeyBean implements Serializable {

	private static final long serialVersionUID = 1888415926054715509L;
	/***
	 * 私钥
	 */
	private PrivateKey privKey;
	/***
	 * 公钥
	 */
	private PublicKey publKey;
	/***
	 * 签名算法
	 */
	private String sigAlgName;
	public PrivateKey getPrivKey() {
		return privKey;
	}
	public void setPrivKey(PrivateKey privKey) {
		this.privKey = privKey;
	}
	public PublicKey getPublKey() {
		return publKey;
	}
	public void setPublKey(PublicKey publKey) {
		this.publKey = publKey;
	}
	public String getSigAlgName() {
		return sigAlgName;
	}
	public void setSigAlgName(String sigAlgName) {
		this.sigAlgName = sigAlgName;
	}
	
	
}

 

 

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

 

/***
	 * 
	 * @param keyStorePath
	 * @param password
	 * @param alias
	 * @return
	 * @throws Exception
	 */
	public static PrivPubKeyBean getPrivPubKeyBean(String keyStorePath,String password,String alias) throws Exception{
		PrivPubKeyBean privPubKeyBean=new PrivPubKeyBean();
		// 获得密钥库
		KeyStore ks =SystemUtil. getKeyStore(keyStorePath, password);
		// 获得私钥
		PrivateKey privateKey = (PrivateKey) ks.getKey(alias, password.toCharArray());
		privPubKeyBean.setPrivKey(privateKey);
		
		// 获得证书
		X509Certificate x509Certificate = (X509Certificate) ks.getCertificate(alias);
		PublicKey pubKey=x509Certificate.getPublicKey();
		privPubKeyBean.setPublKey(pubKey);
		privPubKeyBean.setSigAlgName(x509Certificate.getSigAlgName());
		return privPubKeyBean;
	}

 

 

测试:

 

@Test
	public void test_03() {
		try {
			String message = "whuang";
			String keyStorePath = "d:\\Temp\\a\\a\\ca\\zlex.keystore";
			String password = "abcdefg";
			String alias = "www.kunlunsoft.com";
			PrivPubKeyBean privPubKeyBean = SystemUtil.getPrivPubKeyBean(
					keyStorePath, password, alias);
			byte[] result = SystemUtil.encrypt(message,
					privPubKeyBean.getPublKey());
			byte[] deResult = SystemUtil.decrypt(result,
					privPubKeyBean.getPrivKey());
			System.out.println(new String(deResult));
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

 运行结果:whuang

 

SystemUtil 见附件,路径:src\main\java\com\common\util\SystemUtil.java

 

  • 大小: 25.1 KB
  • lib.zip (603.7 KB)
  • 下载次数: 53
1
0
分享到:
评论
3 楼 hw1287789687 2015-01-27  
midsummer 写道
楼主,你的附件中的jar文件包是空的,能再编译一遍发我邮箱么?294899637@qq.com

注意:
引用
SystemUtil
  已经改名为SystemHWUtil
2 楼 hw1287789687 2015-01-23  
midsummer 写道
楼主,你的附件中的jar文件包是空的,能再编译一遍发我邮箱么?294899637@qq.com

邮件已发送给你
1 楼 midsummer 2015-01-23  
楼主,你的附件中的jar文件包是空的,能再编译一遍发我邮箱么?294899637@qq.com

相关推荐

    CFCA证书环境Java安装

    2. **解压并导入证书**:解压缩下载的证书链文件,然后使用Java的`keytool`命令行工具将其导入到Java的`cacerts`信任库中。`keytool`是一个用于管理密钥和证书的实用程序,内置于Java Development Kit (JDK)中。 3....

    keystore_export导出密钥工具

    【keystore_export导出密钥工具】是一款基于Java编写的实用程序,专为方便开发者和系统管理员导出由keytool生成的keystore文件中的私钥和证书。keytool是Java SDK自带的一个命令行工具,用于管理数字证书和密钥对,...

    PDF数字签名(ITEXT+keytool)

    在本项目中,我们使用了Java的ITEXT库来处理PDF文档,以及keytool工具来生成数字证书。以下是关于这些知识点的详细说明: 1. **PDF数字签名**:PDF数字签名是一种用于验证PDF文档未经修改的机制。它使用非对称加密...

    keystoke证书转换nginx证书工具

    1. 使用`keytool`从`.keystore`文件中导出公钥证书,生成`.crt`文件。 2. 同样使用`keytool`导出私钥,生成`.key`文件。 3. 可能还需要合并`.key`和`.crt`文件到一个`.pem`文件,以便Nginx能够读取。 4. 对于`.pfx`...

    Java语言实现的md5,rsa算法传送文件

    在文件传输中,发送方可以用接收方的公钥加密文件,确保即使在网络中被截获,也无法直接读取文件内容,只有拥有对应私钥的接收方才能解密。 至于Applet,它是Java的一种小程序,可以直接嵌入到HTML页面中运行。通过...

    java获取数字证书信息

    keytool -import -trustcacerts -alias tomcat -file server.cer -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit ``` ##### 3. 配置server.xml文件 接下来,需要修改TOMCAT中的`server.xml`...

    keystore2pk8.zip|keystore2pk8.zip

    使用Java的KeyStore类和其他加密库,这个JAR文件能够读取`.keystore`,提取私钥并将其转换为PKCS#8格式,同时导出证书为X.509 PEM格式。 `readme.txt`文件很关键,它会提供详细的操作指南和注意事项。例如,如何...

    将密钥/证书导入现有Java密钥存储库的shell脚本

    keytool-importkeypair—将密钥/证书对导入现有Java密钥存储库的shell脚本 安装: 将keytool-importkeypair添加到PATH中 使用: Keytool-importkeypair [-k keystore] [-p storepass] -pk8 pk8 -cert cert -alias ...

    Android 中Failed to read key from keystore解决办法

    在上面的示例中,我们使用 keytool 工具生成了一个名为 android.keystore 的 keystore 文件,其中 alias 为 mike,密钥算法为 RSA,密钥大小为 2048 位,有效期为 10000 天。 知识点五: Failed to read key from ...

    java代码签简单示例.doc

    接下来,我们编写了一个简单的Java程序,如`policyTest.java`,该程序用于读取指定文件。然后通过Eclipse的`Export`功能,将其打包成一个可执行的JAR文件`policyTest.jar`。 为了对这个JAR文件签名,我们需要把它和...

    Android渠道包批量签名(mac版本)

    4. **keytool工具**:Java自带的keytool命令行工具用于生成和管理`.keystore`文件。 批量签名步骤: 1. **生成keystore**:使用keytool生成`.keystore`文件,设置好密钥库密码、别名、密码等信息。 2. **APK签名**...

    在facebook中用到的读取证书hash 值

    2. 使用`keytool -list -v -keystore <path_to_your_keystore_file> -alias <your_key_alias>`命令,替换`<path_to_your_keystore_file>`为你的Keystore文件路径,`<your_key_alias>`为你的密钥别名。 3. 输入...

    android studio 签名问题.doc

    `keytool`是Java开发工具包(JDK)的一部分,通常位于`<JAVA_HOME>/bin`目录下。 3. **重置keystore密码** 执行以下命令,用新的keystore密码替换`[insert new keystore password]`,并用实际的keystore文件路径...

    SignApk-master.zip

    - 示例或模板文件:例如Keystore文件示例,或者配置文件模板,帮助用户了解如何创建和使用自己的签名文件。 理解并掌握如何使用SignApk工具对于Android开发者来说非常重要,尤其是当他们需要对反编译的APK进行调试...

    Java中如何通过https调用Webservice接口_测试环境.rar

    keytool -importcert -file test_nciic.cer -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit ``` - 这会将证书添加到默认的信任存储库,密码通常为`changeit`。 2. **创建SSLSocketFactory*...

    JaVA实例学会数字签名

    在Java中,我们通常使用Java的密钥工具(Keytool)和 jarsigner 工具来完成这一过程。 以下是数字签名的基本步骤: 1. **创建密钥对**:使用Keytool生成一对密钥,包括一个私钥和一个对应的公钥。私钥用于签名,...

    目中的SignApk类是从Android的源码

    1. **证书处理**:包括读取和解析keystore文件,获取私钥和对应的证书,这些通常涉及到Java的`KeyStore`类和相关的密钥管理API。 2. **签名算法**:Android支持多种签名算法,如SHA-1和SHA-256,SignApk类会使用`...

    SignApkV2SignApkV2 签名工具rom签名工具 .zip

    SignApkV2会使用Java的keytool工具来生成或者读取密钥库,然后使用 jarsigner 命令来签署APK。 4. **对APK进行ZIPalign优化**:签名后的APK通常还需要进行ZIPalign优化,以提高应用的性能。这个过程会调整APK中的...

    Java Web之高级应用

    3. **Keytool工具**:Keytool是Java提供的命令行工具,用于管理KeyStore,KeyStore存储私钥、公钥和证书。Keytool可以生成私钥、导入导出证书、修改密码、打印和删除KeyStore中的条目。在配置HTTPS时,通常会用...

    Java 2平台安全技术-结构,API设计和实现

    7.5.4 实例4:读取包含证书的文件 135 7.6 标准名 136 7.6.1 消息摘要算法 136 7.6.2 密钥和参数算法 136 7.6.3 数字签名算法 137 7.6.4 随机数产生算法 137 7.6.5 证书类型 137 7.6.6 密钥库类型 137 7.7 算法 137 ...

Global site tag (gtag.js) - Google Analytics