来自 P12 的 pyOpenSSL 中的 RSA 密钥参数
RSA key parameters in pyOpenSSL from P12
我正在使用 pyOpenSSL,我有一个 PKCS12 对象,使用 get_privateKey()
和 get_publicKey()
方法可以获得 RSA Private/Public 密钥对象。有没有办法从这些对象中提取 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_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
}
在 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
我正在使用 pyOpenSSL,我有一个 PKCS12 对象,使用 get_privateKey()
和 get_publicKey()
方法可以获得 RSA Private/Public 密钥对象。有没有办法从这些对象中提取 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_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
}
在 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