În cele din urmă, va trebui să o programați, presupun, iată o mică aplicație Java care creează o CHEIE PRIVATĂ RSA codificată PEM (structură PKCS#1 necriptată) și CHEIE PUBLICĂ (X.509 SubjectPublicKeyInfo).
Evident, este construit pe partea de sus a furnizorului Bouncy Castle pentru Java / JCA și PemWriter
din API-ul „ușor” care face parte din pachetul furnizorului.
pachet com.stackexchange.crypto;
import java.io.FileWriter;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Security;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.io.pem.PemObject;
import org.bouncycastle.util.io.pem.PemWriter;
clasă publică ShortRsaKeyPair {
public static void main(String[] args) aruncă excepție{
Security.addProvider(nou 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();
încercați (PemWriter pemWriter = nou PemWriter(nou FileWriter ("privkey.pem"))) {
pemWriter.writeObject(new PemObject("RSA PRIVATE KEY", pkcs1Object.getEncoded("DER")));
}
// nu este necesar, îl puteți genera și din cheia privată folosind „openssl rsa -pubout”
încercați (PemWriter pemWriter = nou PemWriter(nou FileWriter("pubkey.pem"))) {
pemWriter.writeObject(new PemObject("CHEIE PUBLICA", kp.getPublic().getEncoded()));
}
}
}
Puteți verifica rezultatul folosind:
openssl rsa -pubin -in pubkey.pem -text
openssl rsa -in privkey.pem -text