RSA公私钥结构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/good123day/article/details/25496507

RSA公私钥结构语法:

RSAPublicKey::=SEQUENCE{

modulusINTEGER,--模值n
publicExponentINTEGER--公开指数e}

RSA私钥结构语法
RSAPrivateKey::=SEQUENCE{
versionVersion,--version是INTEGER类型的0
modulus INTEGER,--模值n
public ExponentINTEGER,--公开指数e
privateExponent INTEGER,--d
prime1 INTEGER,--p
prime2 INTEGER,--q
exponent1 INTEGER,--dmod(p-1)
exponent2 INTEGER,--dmod(q-1)

coefficient INTEGER--(inverseofq)modp}


在组织公私钥DER编码时需要注意:

1)上述TLV结构中:

V值长度<0x80,L表示数据的长度;

V值长度>=0x80的时候,L为0x8X,X表示的L长度要占用的字节数,X个字节用来表示V的长度。

2)RSA公钥N的第一个字节如果大于0x80,则需要在公钥值前面补00,这是因为modulus 为一个大整数,最高位为符号位,其为1时,就是负数,所以要在最高位填充0x00以保证不为负。所以公钥TLV应该是:02 81 81 00 [128字节个公钥值]。

3)RSA私钥的N,d,p,q,Dp,Dq,Mp也需要考虑(2)中的第一个字节如果大于0x80的情况。

猜你喜欢

转载自blog.csdn.net/good123day/article/details/25496507
今日推荐