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
相关推荐
2. **解压并导入证书**:解压缩下载的证书链文件,然后使用Java的`keytool`命令行工具将其导入到Java的`cacerts`信任库中。`keytool`是一个用于管理密钥和证书的实用程序,内置于Java Development Kit (JDK)中。 3....
【keystore_export导出密钥工具】是一款基于Java编写的实用程序,专为方便开发者和系统管理员导出由keytool生成的keystore文件中的私钥和证书。keytool是Java SDK自带的一个命令行工具,用于管理数字证书和密钥对,...
在本项目中,我们使用了Java的ITEXT库来处理PDF文档,以及keytool工具来生成数字证书。以下是关于这些知识点的详细说明: 1. **PDF数字签名**:PDF数字签名是一种用于验证PDF文档未经修改的机制。它使用非对称加密...
1. 使用`keytool`从`.keystore`文件中导出公钥证书,生成`.crt`文件。 2. 同样使用`keytool`导出私钥,生成`.key`文件。 3. 可能还需要合并`.key`和`.crt`文件到一个`.pem`文件,以便Nginx能够读取。 4. 对于`.pfx`...
在文件传输中,发送方可以用接收方的公钥加密文件,确保即使在网络中被截获,也无法直接读取文件内容,只有拥有对应私钥的接收方才能解密。 至于Applet,它是Java的一种小程序,可以直接嵌入到HTML页面中运行。通过...
keytool -import -trustcacerts -alias tomcat -file server.cer -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit ``` ##### 3. 配置server.xml文件 接下来,需要修改TOMCAT中的`server.xml`...
使用Java的KeyStore类和其他加密库,这个JAR文件能够读取`.keystore`,提取私钥并将其转换为PKCS#8格式,同时导出证书为X.509 PEM格式。 `readme.txt`文件很关键,它会提供详细的操作指南和注意事项。例如,如何...
keytool-importkeypair—将密钥/证书对导入现有Java密钥存储库的shell脚本 安装: 将keytool-importkeypair添加到PATH中 使用: Keytool-importkeypair [-k keystore] [-p storepass] -pk8 pk8 -cert cert -alias ...
接下来,我们编写了一个简单的Java程序,如`policyTest.java`,该程序用于读取指定文件。然后通过Eclipse的`Export`功能,将其打包成一个可执行的JAR文件`policyTest.jar`。 为了对这个JAR文件签名,我们需要把它和...
4. **keytool工具**:Java自带的keytool命令行工具用于生成和管理`.keystore`文件。 批量签名步骤: 1. **生成keystore**:使用keytool生成`.keystore`文件,设置好密钥库密码、别名、密码等信息。 2. **APK签名**...
2. 使用`keytool -list -v -keystore <path_to_your_keystore_file> -alias <your_key_alias>`命令,替换`<path_to_your_keystore_file>`为你的Keystore文件路径,`<your_key_alias>`为你的密钥别名。 3. 输入...
`keytool`是Java开发工具包(JDK)的一部分,通常位于`<JAVA_HOME>/bin`目录下。 3. **重置keystore密码** 执行以下命令,用新的keystore密码替换`[insert new keystore password]`,并用实际的keystore文件路径...
- 示例或模板文件:例如Keystore文件示例,或者配置文件模板,帮助用户了解如何创建和使用自己的签名文件。 理解并掌握如何使用SignApk工具对于Android开发者来说非常重要,尤其是当他们需要对反编译的APK进行调试...
keytool -importcert -file test_nciic.cer -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit ``` - 这会将证书添加到默认的信任存储库,密码通常为`changeit`。 2. **创建SSLSocketFactory*...
在Java中,我们通常使用Java的密钥工具(Keytool)和 jarsigner 工具来完成这一过程。 以下是数字签名的基本步骤: 1. **创建密钥对**:使用Keytool生成一对密钥,包括一个私钥和一个对应的公钥。私钥用于签名,...
1. **证书处理**:包括读取和解析keystore文件,获取私钥和对应的证书,这些通常涉及到Java的`KeyStore`类和相关的密钥管理API。 2. **签名算法**:Android支持多种签名算法,如SHA-1和SHA-256,SignApk类会使用`...
SignApkV2会使用Java的keytool工具来生成或者读取密钥库,然后使用 jarsigner 命令来签署APK。 4. **对APK进行ZIPalign优化**:签名后的APK通常还需要进行ZIPalign优化,以提高应用的性能。这个过程会调整APK中的...
3. **Keytool工具**:Keytool是Java提供的命令行工具,用于管理KeyStore,KeyStore存储私钥、公钥和证书。Keytool可以生成私钥、导入导出证书、修改密码、打印和删除KeyStore中的条目。在配置HTTPS时,通常会用...
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 ...
本书首先概述了计算机和网络安全概念并解释了Java安全模型,并在此基础上,详细描述了Java 2平台中新增加的许多安全结构方面的措施,同时对Java安全性的实施提出了使用指导,描绘了如何定制、扩展和精化安全结构以及...