openssl生成私鑰:
openssl?genrsa -out rsa_private_key.pem 1024
基于私鑰生成公鑰:
openssl?rsa?-in?rsa_private_key.pem?-out?rsa_public_key.pem?-pubout?writing?RSA?key
1、openssl默認(rèn)生成私鑰為pkcs#1格式,java直接使用會(huì)報(bào)錯(cuò)(但可被openssl使用,如php可使用openssl函數(shù))
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException:
IOException : algid parse error, not a sequence
2、java需要使用需要新增以下代碼,即可使用pkcs#1格式
RSAPrivateKeyStructure asn1PrivKey =?new?RSAPrivateKeyStructure((ASN1Sequence) ASN1Sequence.fromByteArray(priKeyData));
RSAPrivateKeySpec rsaPrivKeySpec =?new?RSAPrivateKeySpec(asn1PrivKey.getModulus(), asn1PrivKey.getPrivateExponent());
KeyFactory keyFactory= KeyFactory.getInstance("RSA");
PrivateKey priKey= keyFactory.generatePrivate(rsaPrivKeySpec);
3、pkcs#1格式轉(zhuǎn)換為pkcs#8格式,則java可以正常使用
openssl?pkcs8?-topk8?-in?rsa_private_key.pem?-out?pkcs8_rsa_private_key.pem?-nocrypt