问题描述
我在PEMParser上阅读了很多不好的例子:
int myFunc(String privateKeyFileName,char [] password) {
File privateKeyFile = new File(privateKeyFileName); // private key file in PEM format
PEMParser pemParser = new PEMParser(new FileReader(privateKeyFile));
Object object = pemParser.readobject();
PEMDecryptorProvider decProv = new JcePEMDecryptorProviderBuilder().build(password);
JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
KeyPair kp;
if (object instanceof PEMEncryptedKeyPair) {
System.out.println("Encrypted key - we will use provided password");
kp = converter.getKeyPair(((PEMEncryptedKeyPair) object).decryptKeyPair(decProv));
} else {
System.out.println("Unencrypted key - no password needed");
kp = converter.getKeyPair((PEMKeyPair) object);
}
}
Bouncy Castle : PEMReader => PEMParser
也在这里: How to read .pem file to get private and public key https://www.codota.com/code/java/classes/org.bouncycastle.openssl.PEMParser https://www.programcreek.com/java-api-examples/?api=org.bouncycastle.openssl.PEMParser https://www.javatips.net/api/org.bouncycastle.util.io.pem.pemreader
BouncyCastle是否为此提供了一些工厂方法?
我发现的唯一东西是:org.apache.sshd.common.keyprovider.FileKeyPairProvider(Apache Mina SSH Java客户端实现)。我认为类似的东西可能是BouncyCastle本身或Apache通用库(fileutils / stringutils)的一部分。
是否有任何工厂/制造商方法或某些设计模式实现,或者每个人都在使用if (object instance of xxx)
之类的生产代码并在旅途中解决问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)