问:是否可以从Java密钥存储读取RSA密钥对可以从公钥捕获公钥主体标识?
我已经生成了一个带有SHA1 2048位密钥的RSA,使用Java密钥工具并将密钥对存储在JKS文件中。我可以从这里使用代码加载密钥:https://stackoverflow.com/a/26711907/1203182但是我得到的是RSAPublicKey,而不是X509证书。RSA公钥没有从公钥中查找主题标识或DN的任何方法。
有没有办法转换RSA公钥或从中派生X509证书?或者我只是不明白什么。
我建议在Java中处理加密和解密时使用Bouncy Castle。
这里有一些东西可以给你一些信息(我想他也会像你想的那样做):
从keystore中的文件读取公钥
那里的代码示例如下所示:
PEMParser pemParser = new PEMParser(new StringReader(certPEMData));
Object parsedObj = pemParser.readObject();
System.out.println("PemParser returned: " + parsedObj);
if (parsedObj instanceof X509CertificateHolder)
{
X509CertificateHolder x509CertificateHolder = (X509CertificateHolder) parsedObj;
return x509CertificateHolder.getSubjectPublicKeyInfo().getPublicKeyData().getString();
}
else
{
throw new RuntimeException("The parsed object was not an X509CertificateHolder.");
}
这里是Bouncy Castle图书馆的网站,也应该有一些信息:
弹跳城堡
如果你懒惰,这里是他们最新版本的链接。在构建路径中包含该JAR文件,您可以复制粘贴上面的代码。
Bouncy Castle图书馆直接下载
和往常一样,我在发布这篇文章几秒钟后就想出了自己的答案。谈论橡皮鸭编码。解决办法很简单,我找错地方了。下面的代码片段。。。
Key key = keystore.getKey(alias, "password".toCharArray());
if (key instanceof PrivateKey) {
// Get certificate of public key
Certificate cert = keystore.getCertificate(alias);
//Answer > get the DN from 'cert.getSubjectDN()`
// Get public key
PublicKey publicKey = cert.getPublicKey();
//publicKey is NOT where you can get the certificate DN....
问题内容: 我有以下格式的公钥 我需要将其转换为以下格式 基本上,问题是我正在使用用Java编写的第三方库。 第三方库使用Java类“ RSAPublicKeySpec”从字符串生成RSAPublicKey类型的实例。 我提供给该第三方库的字符串取自以下格式的文件: 仔细研究一下代码之后,我可以看到,如果我使用java类“ X509EncodedKeySpec”来加载此公共密钥,则代码的签名验证部
我有以下公钥(作为示例): 我需要能够将其转换为可以插入ssh known_hosts文件的格式。例如: 谢了!
我需要将生成的BouncyCastle转换为,并将私钥加载到结果的.NET标准对象中。这可能吗? 对于类似的问题有一个答案https://stackoverflow.com/a/8150799/5048935,但是在生成一个BouncyCastle证书并将其转换为.NET之后,结果对象的属性设置为“false”。 我需要将证书和私钥(不带页眉和页脚的单独的Base64字符串)加载到对象中,以便将其
这是我生成RSA密钥的代码 现在我想转换DER/ASN.1编码字节,也知道使用Java JCE API生成RSA密钥时使用的默认编码格式是什么。
我的公共在ssh-rsa是: ssh rsa aaaab3nzac1yc2aaaaaadaqabaababaqclaxt5s/wux04oxbt9r59wcl45omau3m0063lfyja7ovqavr7/2kHtLF/LoCQCXSZMny8RTCGDjoXD7G/tGsyHFDHCI//Y1VDLE06AlDzrlu69DQY91 6gkhghgjh3sf6us5hxlihrbsflf8g
我需要用java生成openssh格式的密钥对。 我使用java中的KeyPairGenerator生成了一个公私密钥对,并将其保存到一个文件中: 但是,如果我尝试使用这个与ssh-keygen我得到一个"失败加载密钥private.key:无效格式" 如何将PKCS#8私钥转换为openssh格式或生成openssh格式的密钥对?