keytool -genkey -alias test -keyalg RSA -keystore c:/key.store
生成keyStore
RSA是一个既能用于数据加密也能用于数字签名的算法。
DSA(Digital Signature Algorithm,数字签名算法,用作数字签名标准的一部分),它是另一种公开密钥算法,它不能用作加密,只用作数字签名。DSA使用公开密钥,为接受者验证数据的完整性和数据发送者的身份。
提取证书:
通过keytool命令我们可以很轻松的提取证书.
证书包括主体信息,公钥.
keytool -export -alias 别名 -keystore 文件名 -file 证书名称
但是我们无法通过KEYTOOL工具来提取私钥的..我们只能通过java的KeyStore类getEntry() 或者getKey()来提取私钥.
读取keyStore文件:
char[] password = "password".toCharArray();
java.io.FileInputStream fis = new java.io.FileInputStream("c:/server/server_keystore");
// 从指定的输入流中加载此 KeyStore
ks.load(fis, password);
//keystore 中的每一项都用“别名”字符串标识。
//使用指定保护参数获取指定别名的 keystore Entry。
//KeyStore.PrivateKeyEntry 保存 PrivateKey 和相应证书链的 KeyStore 项。
方法1. KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(
"keystore别名",
new KeyStore.PasswordProtection(
password));
// 返回与给定别名相关联的密钥
方法2. PrivateKey key = (PrivateKey) ks.getKey("ser", password);
怎么来验证提取的私钥是否正确呢?(因为公钥私钥必须成对出现,我们可以通过证书提取去公钥,然后用公钥加密,使用刚刚获得的私钥解密)
提取证书的方法:
keytool -export -alias 别名 -keystore 文件名 -file 证书名称
//通过证书,获取公钥
CertificateFactory cf = CertificateFactory.getInstance("X.509");
FileInputStream in = new FileInputStream("C:\\server\\server.cer");
//生成一个证书对象并使用从输入流 inStream 中读取的数据对它进行初始化。
Certificate c = cf.generateCertificate(in);
PublicKey publicKey = c.getPublicKey();
//通过下面这段代码提取的私钥是否正确
String before = "asdf";
byte[] plainText = before.getBytes("UTF-8");
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
// 用公钥进行加密,返回一个字节流
byte[] cipherText = cipher.doFinal(plainText);
cipher.init(Cipher.DECRYPT_MODE, myPrivateKey);
// 用私钥进行解密,返回一个字节流
byte[] newPlainText = cipher.doFinal(cipherText);
System.out.println(new String(newPlainText, "UTF-8"));
分享到:
相关推荐
从code-google中导出的源码,用于从JDK keytool创建的keystore中导出私钥,通常用于nginx配置SSL时使用
这个工具不是网上的那种不负责任的代码贴或者是所谓高手的乱侃 此工具可直接用包内的批处理运行(请设定keystore相关参数) 要点:确定JDK环境安装是完整的
java 生成的有私钥的证书导入IE,或者把IE导出的证书导入java的KeyStore
Java KeyStore文件转换为微软的.pfx文件和OpenSSL的PEM格式文件(.key + .crt) 运行方式: JKS2PFX <KeyStore文件> <KeyStore密码> 别名> <导出文件名> [Java Runtime的目录] Java Runtime的目录,指包含Java.exe和...
可以轻松的查看keystore证书
广泛的格式支持KeyStore Explorer支持多种KeyStore,密钥对,私钥和证书格式,并可在它们之间进行转换。请参阅功能,以获取受支持格式的列表。 CA的基本功能KeyStore Explorer可以用于创建自己的CA证书并使用它签名...
对密钥,密钥对,公钥,证书,私钥,jks,keystore,truststore,cer,pfx
JSSE(Java Security Socket Extension) 是Sun为了解决在Internet上的实现安全信息传输的解决方案。它实现了SSL和TSL(传输层安全)协议。在JSSE中包含了数据加密,...2)Trust KeyStore:其中保存服务端的授权证书
在使用signapk工具签名时,是需要 x509.pem + pk8格式的证书,它是一个公私钥分开存放的格式,在电脑上生成的证书一般是以 keystore格式存放的,有时在证书签发机构申请的证书也是 keystore格式的。这时用signapk...
keystore文件,安卓keystore加密证书100年有效,含KEY密码,正式证书,是老铁们开发是急需的正式Android签名,密码就是下载后的文件名
KeyStore.store生成证书报错,需要两个架包,本应该取oracle官网下载,但官网已撤销,所以在这提供给需要的同学下载,这两个架包经我实测支持jdk1.7和jdk1.8 报错信息:java.io.IOException: exception encrypting ...
keystoke证书转换nginx证书工具,jdk keytool.exe生成的.keystore格式证书通过他可以转换为.key、.pfx、.crt证书,用于配置https证书
casServer.keystore
可以将.keystore文件提取私钥.key 使用方法 JKS2PFX <KeyStore文件> <KeyStore密码> 别名> <导出文件名> [JavaRuntime的目录] c:\temp\kestore-export\kestore-export>JKS2PFX c:\temp\kestore-export\.keystore ...
本文以Android签名JKS格式的证书为例: package com.test; import java.io.FileInputStream; import java.security.Key; import java.security.KeyStore; import java.security.PrivateKey; import java.security....
这个签名工具目测和E4A相同界面哦。此源码已将-keypass 和-storepass 设置为相同密码。用到的模块:取DOS执行结果 取DOS执行结果.rar (2 KB, 下载次数: 217) 。' 签名方法:在jdk1.8下有效,。jarsigner -verbose ...
java_keystore_from_files Ansible模块,用于从证书和私钥文件创建密钥库描述这个模块的灵感来自于。 已对其进行修改以实现以下更新: 原始模块采用私钥和证书的内容=>此模块采用路径。 它可以避免创建临时文件...
HBuilder生成自有证书,因为现在例如腾讯应用平台上,上传app的时候appid被占用了需要keystore文件和生成证书是的MD5信息
破解安卓签名文件,找回keystore密码和别名 给两个积分赞助一下吧 嘻嘻