openssl rsa 使用

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默认生成私钥为pkcs#1格式,java直接使用会报错(但可被openssl使用,如php可使用openssl函数)

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格式转换为pkcs#8格式,则java可以正常使用

openssl pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt

你可能感兴趣的:(openssl rsa 使用)