В конце концов вам придется запрограммировать его, я полагаю, вот небольшое приложение Java, которое создает закодированный PEM PRIVATE KEY RSA (незашифрованная структура PKCS # 1) и PUBLIC KEY (X.509 SubjectPublicKeyInfo).
Очевидно, что он построен на основе провайдера Bouncy Castle для Java/JCA и PemWriter
из «облегченного» API, входящего в пакет провайдера.
пакет com.stackexchange.crypto;
импортировать java.io.FileWriter;
импортировать java.security.KeyPair;
импортировать java.security.KeyPairGenerator;
импортировать java.security.Security;
импортировать org.bouncycastle.asn1.ASN1Object;
импортировать org.bouncycastle.asn1.ASN1Sequence;
импортировать org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
импортировать org.bouncycastle.jce.provider.BouncyCastleProvider;
импортировать org.bouncycastle.util.io.pem.PemObject;
импортировать org.bouncycastle.util.io.pem.PemWriter;
открытый класс ShortRsaKeyPair {
public static void main(String[] args) выдает Exception{
Security.addProvider(новый BouncyCastleProvider());
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
кпг.инициализировать(228);
KeyPair kp = kpg.generateKeyPair();
PrivateKeyInfo privKeyInfo = PrivateKeyInfo.getInstance(ASN1Sequence.getInstance(kp.getPrivate().getEncoded()));
ASN1Object pkcs1Object = (ASN1Object) privKeyInfo.parsePrivateKey();
try (PemWriter pemWriter = new PemWriter(new FileWriter("privkey.pem"))) {
pemWriter.writeObject(new PemObject("ЧАСТНЫЙ КЛЮЧ RSA", pkcs1Object.getEncoded("DER")));
}
// не требуется, вы также можете сгенерировать его из закрытого ключа с помощью «openssl rsa -pubout»
try (PemWriter pemWriter = new PemWriter(new FileWriter("pubkey.pem"))) {
pemWriter.writeObject(новый PemObject("ПУБЛИЧНЫЙ КЛЮЧ", kp.getPublic().getEncoded()));
}
}
}
Вы можете проверить результат, используя:
openssl rsa -pubin -in pubkey.pem -текст
openssl rsa -in privkey.pem -text