RSA私钥DER编码规则

    技术2022-05-19  20

    RSA私钥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 } DER是一个TLV编码。 SEQUENCE是总的TAG,TAG=0x30,Length=0x0258后面是数据内容。 长度的表示方法有以下2种情况: 1. 数据长度<0x80的时候,Length即为数据的长度; 2. 数据长度>=0x80的时候,Length为0x8?,表示后面跟的?表示的Length长度。例如82 01 20,82表示82后面2个字节为长度的字节长度,数据长度为0x0120。 Version的TAG为0x02,在RSA私钥的DER编码中,除了SEQUENCE的TAG为0x30,其余的为0x02。目前的Version全都为0。 modulus 值TAG为0x02,其值的类型为整型。 这里要注意的是当第一个字符的最高位为1时,即为0x8?时,要在最高位填充0x00。这是因为modulus 为一个大整数,最高位为符号位,其为1时,就是负数,所以要在最高位填充0x00以保证不为负。


    最新回复(0)