ในตอนท้ายคุณจะต้องตั้งโปรแกรม ฉันคิดว่านี่คือแอปพลิเคชัน Java ขนาดเล็กที่สร้าง PEM ที่เข้ารหัส RSA PRIVATE KEY (โครงสร้าง 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 คลาสสาธารณะ {
โมฆะสาธารณะคงที่ main (String[] args) โยนข้อยกเว้น{
Security.addProvider (ใหม่ 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();
ลอง (PemWriter pemWriter = PemWriter ใหม่ (FileWriter ใหม่ ("privkey.pem"))) {
pemWriter.writeObject(new PemObject("RSA PRIVATE KEY", pkcs1Object.getEncoded("DER")));
}
// ไม่จำเป็น คุณสามารถสร้างได้จากคีย์ส่วนตัวโดยใช้ "openssl rsa -pubout"
ลอง (PemWriter pemWriter = PemWriter ใหม่ (FileWriter ใหม่ ("pubkey.pem"))) {
pemWriter.writeObject (ใหม่ PemObject ("คีย์สาธารณะ", kp.getPublic().getEncoded()));
}
}
}
คุณสามารถตรวจสอบผลลัพธ์โดยใช้:
opensl rsa -pubin -in pubkey.pem -ข้อความ
opensl rsa - ใน privkey.pem - ข้อความ