密码学可以组织起来。弹跳船舱。openssl。PEMReader阅读java。安全私钥?
我有以下代码:
PrivateKey key = null;
X509Certificate cert = null;
KeyPair keyPair = null;
final Reader reader = new StringReader(pem);
try {
final PEMReader pemReader = new PEMReader(reader, new PasswordFinder() {
@Override
public char[] getPassword() {
return password == null ? null : password.toCharArray();
}
});
Object obj;
while ((obj = pemReader.readObject()) != null) {
if (obj instanceof X509Certificate) {
cert = (X509Certificate) obj;
} else if (obj instanceof PrivateKey) {
key = (PrivateKey) obj;
} else if (obj instanceof KeyPair) {
keyPair = (KeyPair) obj;
}
}
} finally {
reader.close();
}
它会读私钥吗?换句话说,任何PEM文件都只能包含纯私钥吗?如果是,你能给我一份PEM文件样本吗
谢谢你
# 1 楼答案
文件只能包含私钥,并且可以是加密的或明文的。OpenSSL一直都在这样做
但是,我查看了
PEMReader
的代码,它看起来将从RSA私钥返回KeyPair
(私钥文件包含对应公钥的所有必要信息)。看起来它永远不会从readObject()
返回一个PrivateKey
这是来自OpenSSL的未加密1024 RSA私钥
以下是相应的公钥:
一个
KeyStore
用于在Java应用程序中携带公钥、私钥和对称密钥。大多数Java应用程序以PKCS#8编码(不是the same as the OpenSSL format)存储私钥,公钥用SubjectPublicKeyInfo
结构表示(与OpenSSL相同)