RSA
keys can be saved into different formats: PEM, DER, Microsoft PUBLICKEYBLOB and
Microsoft PRIVATEKEYBLOB. It might be challenging to convert the keys from one
format to another.
Here
is some very helpful information from this post http://pumka.net/2009/12/19/reading-writing-and-converting-rsa-keys-in-pem-der-publickeyblob-and-privatekeyblob-formats/
The
keys contain those big numbers used for encryption.
·
Private key contains: modulus, private exponent, public exponent, prime 1, prime 2, exponent 1, exponent 2 and coefficient.
·
Public key contains
only modulus and public exponent.
- DER format is based on Abstract Syntax Notation One (ASN.1). You can use ASN.1 Editor to view its structure and contents.
- PEM format from OpenSSL is based64 encoded format of DER format
- PRIVATEKEYBLOB and PUBLICKEYBLOB are C-style structure defined by Microsoft.
OpenSSL
is a nice tool to convert the keys from one format to another. Here are some
examples:
#convert
private key from PEM to DER
openssl.exe
rsa -inform PEM -in test.pem -outform DER -out test.der
#convert
private key from DER to PEM
openssl.exe
rsa -inform DER -in test.DER -outform PEM -out test1.pem
#convert
public key from PEM to DER
openssl.exe
rsa -inform PEM -pubin -in testPub.pem -outform DER -out testPub.der
#convert
public key from DER to PEM
openssl.exe
rsa -inform DER -pubin -in testPub.der -outform PEM -out testPub.pem
#convert
public key from PEM to PUBLICKEYBLOB
openssl.exe
rsa -inform "PEM" -pubin -in testPub.pem -outform "MS\
PUBLICKEYBLOB" -out testPub.pblob
#convert
private key from PEM to PRIVATEKEYBLOB
openssl.exe
rsa -inform "PEM" -in test.pem -outform "MS\
PRIVATEKEYBLOB" -out test.pblob
Here
is a python script to convert keys from PEM to DER format:
import base64
fileName="c:\\temp\\testPub.pem"
fileContent=""
with
open(fileName, 'r') as f:
fileContent=f.readlines()
fileContent.pop()
fileContent.pop(0)
s=''.join(fileContent)
s=s.replace('\n','')
data
=base64.b64decode(s)
print
data.encode('hex')
No comments:
Post a Comment