你说OpenSSL支持“的”格式,但OpenSSL的支持多种格式(RSA等)私人密钥,超过一打的取决于你如何计数。
的特定格式告诉你,也许是巧合,是由的Java密码直接支持两种格式的PEM形式,PKCS8未加密的私人和“X.509”(真正的SubjectPublicKeyInfo又名SPKI),供市民和因此可以简单地创建:
//nopackage
import java.security.*;
import java.util.Base64;
public class SO43459993SimpleRSAPEM {
public static void main (String[] args) throws Exception {
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(2048); KeyPair kp = kpg.generateKeyPair();
System.out.println ("-----BEGIN PRIVATE KEY-----");
System.out.println (Base64.getMimeEncoder().encodeToString(kp.getPrivate().getEncoded()));
System.out.println ("-----END PRIVATE KEY-----");
System.out.println ("-----BEGIN PUBLIC KEY-----");
System.out.println (Base64.getMimeEncoder().encodeToString(kp.getPublic().getEncoded()));
System.out.println ("-----END PUBLIC KEY-----");
}
}
输出示例:
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCiaT/zBxjS6ZBiCbUBiUFirm3/
xo+A8LY3yBsffu6/6mO0ZwrXNtrHmpQEdld5/XM+k8vKOE+KTfeUwikKOLnHeuzV5qrO4/WZPDyz
ggXGqFrgI3/WT8AqTcAmc21CG92Wx+omVaFyl5j5/Sh6aapYl6TG7qX4NXzEln7Ka70Az39nKtqi
oe7LA5ARjcyOBRPXVg2Oq/O+XSwy/epFHIs83ucswF1j/4Nv4u7juCIQ4+sQFyBUwh2docgH9+Ls
MQ18a2N3khNbhxD9TkehuSGU+/KHd0OmEXVHx6dxEvvVTG+MYuuqBbUxdnReggTdX5bJUXtzf+RM
+6yuqauLNlJDAgMBAAECggEAES0WYUpn2q5u4Z9rMC1m59vQsFM8jANpEf8stykCcPOF9edL4zTe
8GstqkcluzYNwRl6XPmVl+fk/iuGkZksNKeQcpLBj73WFI2lUcq3d6oIaln2xCCNDyxH3QkqDerK
hY7A+armtyrHN/EJHeEc7d+jwpIspVJqzpOn9xpr07DyPJ7EK2IsoupMrJ3OwAmcTWvCnv0465fr
t+OOzlHF6m1fQtTKD7kBcKE9vnGdkNbpOxY6VI0p9e0R3ymITeXWFxebq8G7hMO3baD775t55smv
fbWPl41idvTfwAIgUdfKaEk/28zlXwm6WBt3MBF+jlhbfe3zr5RphxtVdIzIYQKBgQD2iqtSXM6/
PrxM2CNnS0RwVNvDcx6+BwemJk+pkfq1BSuXrLbAs3KPfZ51ASHmV9+8IDuV98nJEEKu4einIGUa
m4GK7gHAq0Ml2ISyXTB+28ZXkgDWqvP044T1RbakBrccDDcbsSiIRznyXkJ2VrTA6+Xufz4rIs2Y
IkYnwBKPkwKBgQCopFGz/7VqPDRd5RL0pm2YWp85M06SD8zss0lbL+EBnAGy/zRjKYMMVlZpuA+Q
6od8idyYoOBNpFgf+SGJTs097yUP7Vk98wk4jDqC0Kbd9VGXlUfWwpFeGlcO6zVTtVC6ShLDyBTL
QoulgIhFmHtjHLsUKhehixhbtDXXfmEAkQKBgDvrR+gkljr0zF8AyNn5+RA0D5VZDUex/bHr7cCQ
shX8w7OBTolXE6i8Jx7Yv5x0DvRyAQlZx7kOMqa+UQUNYoUs9jcF0Xc6KH+yN84ByB+M2o+99GY3
9kK2aUITR2hmGWq/rUUVsXwtk2/MaOrJ9/RLYP6t/jYNp1oqOlK+48PxAoGBAJhTM+leA0Nd9f8J
tsF8wmlnEYLdMQ8FbpguqQfQi3CktXQ0x+D50gEGyy7arlS7Qn3fGH5UccYvt9nJcd1QbFqQ8+0a
+gzWxXFqWD9osBC0UWqV0DnPrPZO3GwBUD23/J8H4UMuKnoeNXzcSDp0rJ6tiN2B1652sR3D/Q4U
fRHBAoGAAseKaXqnBWeSS2RE/FZ7meSC0Wge7dTgkTKRRkJfKuOfLvTs1FB6mNVGkffcjltPuxM3
m79c3lnkD9ub7UZcJtNRY8sv0oM6K6ez1stB9M7qc/ZbgbAE7LzCqgGIywgNVCBAZ4zgSGl0h1SM
/evMdsYTYUXubxolHGq56o+UL4M=
-----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAomk/8wcY0umQYgm1AYlBYq5t/8aPgPC2
N8gbH37uv+pjtGcK1zbax5qUBHZXef1zPpPLyjhPik33lMIpCji5x3rs1eaqzuP1mTw8s4IFxqha
4CN/1k/AKk3AJnNtQhvdlsfqJlWhcpeY+f0oemmqWJekxu6l+DV8xJZ+ymu9AM9/ZyraoqHuywOQ
EY3MjgUT11YNjqvzvl0sMv3qRRyLPN7nLMBdY/+Db+Lu47giEOPrEBcgVMIdnaHIB/fi7DENfGtj
d5ITW4cQ/U5HobkhlPvyh3dDphF1R8encRL71UxvjGLrqgW1MXZ0XoIE3V+WyVF7c3/kTPusrqmr
izZSQwIDAQAB
-----END PUBLIC KEY-----
我不明白的问题向下票.. – Jonathan
OpenSSL的 - 它可以使用“的OpenSSL genrsa -out的myKey完成。 pem 1 024',但有没有办法在java中立即做到这一点? –
可能重复的[生成RSA密钥对和编码私人作为字符串](http://stackoverflow.com/questions/1709441/generate-rsa-key-pair-and-encode-private-as-string) – sm4