Cuối cùng, tôi cho rằng bạn sẽ phải lập trình nó, đây là một ứng dụng Java nhỏ tạo KHÓA RSA RSA được mã hóa PEM (cấu trúc PKCS#1 không được mã hóa) và KHÓA CÔNG CỘNG (X.509 SubjectPublicKeyInfo).
Rõ ràng nó được xây dựng dựa trên nhà cung cấp Bouncy Castle cho Java/JCA và PemWriter
từ API "nhẹ" là một phần của gói nhà cung cấp.
gói com.stackexchange.crypto;
nhập java.io.FileWriter;
nhập java.security.KeyPair;
nhập java.security.KeyPairGenerator;
nhập java.security.Security;
nhập org.bouncycastle.asn1.ASN1Object;
nhập org.bouncycastle.asn1.ASN1Sequence;
nhập org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
nhập org.bouncycastle.jce.provider.BouncyCastleProvider;
nhập org.bouncycastle.util.io.pem.PemObject;
nhập org.bouncycastle.util.io.pem.PemWriter;
lớp công khai ShortRsaKeyPair {
public static void main(String[] args) throws Exception{
Security.addProvider(mới BouncyCastleProvider());
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
kpg.initialize(228);
KeyPair kp = kpg.generateKeyPair();
PrivateKeyInfo privKeyInfo = PrivateKeyInfo.getInstance(ASN1Sequence.getInstance(kp.getPrivate().getEncoded()));
ASN1Object pkcs1Object = (ASN1Object) privKeyInfo.parsePrivateKey();
thử (PemWriter pemWriter = new PemWriter(new FileWriter("privkey.pem"))) {
pemWriter.writeObject(new PemObject("RSA PRIVATE KEY", pkcs1Object.getEncoded("DER")));
}
// không cần thiết, bạn cũng có thể tạo nó từ khóa riêng bằng cách sử dụng "openssl rsa -pubout"
thử (PemWriter pemWriter = new PemWriter(new FileWriter("pubkey.pem"))) {
pemWriter.writeObject(new PemObject("PUBLIC KEY", kp.getPublic().getEncoded()));
}
}
}
Bạn có thể kiểm tra kết quả bằng cách sử dụng:
openssl rsa -pubin -in pubkey.pem -text
openssl rsa -in privkey.pem -text