Python P12中pyOpenSSL中的RSA密钥参数

Python P12中pyOpenSSL中的RSA密钥参数,python,cryptography,rsa,pyopenssl,Python,Cryptography,Rsa,Pyopenssl,我使用的是pyOpenSSL,我有一个PKCS12对象,通过get_privateKey()和get_publicKey()方法可以获得RSA Private/Public key对象。有没有办法从这些对象中提取RSA密钥参数(p、q、dp、dq、qinv) 您可以使用ASN1解析器获取关键参数: from OpenSSL.crypto import dump_privatekey, FILETYPE_ASN1 from Crypto.Util.asn1 import DerSequence

我使用的是pyOpenSSL,我有一个PKCS12对象,通过
get_privateKey()
get_publicKey()
方法可以获得RSA Private/Public key对象。有没有办法从这些对象中提取RSA密钥参数(p、q、dp、dq、qinv)

您可以使用ASN1解析器获取关键参数:

from OpenSSL.crypto import dump_privatekey, FILETYPE_ASN1
from Crypto.Util.asn1 import DerSequence

private_key_der = DerSequence()
# private_key is obtained from PKCS12 object using get_privateKey()
private_key_der.decode(dump_privatekey(FILETYPE_ASN1, private_key))
private\u key\u der
将根据以下der结构包含密钥参数

RSAPrivateKey ::= SEQUENCE {
  version           Version,
  modulus           INTEGER,  -- n
  publicExponent    INTEGER,  -- e
  privateExponent   INTEGER,  -- d
  prime1            INTEGER,  -- p
  prime2            INTEGER,  -- q
  exponent1         INTEGER,  -- d mod (p-1)
  exponent2         INTEGER,  -- d mod (q-1)
  coefficient       INTEGER,  -- (inverse of q) mod p
  otherPrimeInfos   OtherPrimeInfos OPTIONAL
}
在python中,这相当于:

private_key_der[0] # version
private_key_der[1] # modulus
private_key_der[2] # publicExponent
private_key_der[3] # privateExponent
private_key_der[4] # prime1
private_key_der[5] # prime2
private_key_der[6] # exponent1
private_key_der[7] # exponent2
private_key_der[8] # coefficient
private_key_der[9] # otherPrimeInfos