2015-09-25 97 views

回答

1

您可以使用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_key_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 
} 

這蟒蛇將相當於包含的關鍵參數:

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