public static void generateRSAKey() {
try {
SecureRandom sr = new SecureRandom();
KeyPairGenerator kg = KeyPairGenerator.getInstance("RSA",new org.bouncycastle.jce.provider.BouncyCastleProvider());
// 注意密钥大小1024
kg.initialize(1024, sr);
KeyPair keyPair = kg.generateKeyPair();
PrivateKey priKey = keyPair.getPrivate();
PublicKey pubKey = keyPair.getPublic();
byte[] publicKey = pubKey.getEncoded();
byte[] privateKey = priKey.getEncoded();
String hexPublicKey = byteArr2HexString(publicKey);
System.out.println("公钥:"+pubKey.getFormat() + " ; " + byteArr2HexString(publicKey));
System.out.println("私钥:"+priKey.getFormat() + " ; " +byteArr2HexString(privateKey));
} catch (Exception e) {
e.printStackTrace();
}
}
公钥:X.509 ;
30819f300d06092a864886f70d010101050003818d003081890281810090169dd9c5edc8f09c971d8583c342b1059068164458aa0faabf3a66c9755cd4d41b173758b1d1ad839d4ab0384314a49c6766b432aa15b4a009f7767682a180fb7b0f5a2926bbb339d5924e3c86e29713b30c66c4570917e731cd5ebc93712001e496ef3a74ad9db69aa41c68839231f43a0829ce67ec60b3db2d239de2c6f70203010001
其中公钥的X.509格式删除前44位得到DER格式:3081890281810090169dd9c5edc8f09c971d8583c342b1059068164458aa0faabf3a66c9755cd4d41b173758b1d1ad839d4ab0384314a49c6766b432aa15b4a009f7767682a180fb7b0f5a2926bbb339d5924e3c86e29713b30c66c4570917e731cd5ebc93712001e496ef3a74ad9db69aa41c68839231f43a0829ce67ec60b3db2d239de2c6f70203010001