在PKCS#1 RSA算法标准中定义RSA私钥语法
RSAPrivateKey ::= SEQUENCE {
version Version, //版本
modulus INTEGER, // RSA合数模 n
publicExponent INTEGER, //RSA公开幂 e
privateExponent INTEGER, //RSA私有幂 d
prime1 INTEGER, //n的素数因子p
prime2 INTEGER, //n的素数因子q
exponent1 INTEGER, //值 d mod (p-1)
exponent2 INTEGER, //值 d mod (q-1)
coefficient INTEGER, //CRT系数 (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
otherPrimeInfos 按顺序包含了其它素数r3, …, ru的信息。如果version是0 ,它应该被忽略;而如果version是1,它应该至少包含OtherPrimeInfo的一个实例。
OtherPrimeInfos ::= SEQUENCE SIZE(1…MAX) OF OtherPrimeInfo
OtherPrimeInfo ::= SEQUENCE {
prime INTEGER, //ri – n的一个素数因子ri ,其中i ≥ 3
exponent INTEGER, //di – di = d mod (ri − 1)
coefficient INTEGER //ti – CRT系数 ti = (r1 · r2 · … · ri–1)–1 mod ri
}
RSAPrivateKey 和OtherPrimeInfo各域的意义,如注释所示。
本文讲述适用范围:已知各域值,组装RSA私钥文件,即PEM文件。
PEM文件组成是TLV结构。
一、数据实例,各域值如下:
- version:
00 - moudlus:
c1f7f7196d9ef4b97abede2d5322d76c17fdf9592c39511027268293a14603b6
5d5425c99cfb5194d37b73487d26e31edf35cfe1e7f58366b5adb35d18f8cdb1
401264ed35a3e26dc131c099eca45ac23dbc2e1a0d00f6defd6428a6431429b2
744943f2e1dffe00bbd1dcf22ec7c0dde553659763c8c11db883ccb6de0de91d
5d2bcffe57e368bf5a1799bbd6f978706793dc7aa710c1cf00725827df6651e2
15ca4bc83509c89bb257479a2833fa972f4344799c37f8217b704c9e5ae2e09d
1d5941ddd4caf71d12a823fdf421930df034220bd8ee37fc8b0543f1f2f49ade
6a7ffcc7ab9d1edab4b07b7f33a72f0c660ea3c46fd7c1243ed956244e506463 - publicExponent:
010001 - privateEx