PKCS#1规范阅读笔记2--------公私钥ASN.1结构

     PKCS#1种介绍了哈希算法的OID等的ASN.1结构,因为使用ASN.1的解码工具(比如:ASN1View)时,会自动显示出各OID的含义,所以这里就不说明了。下面就只简单摘抄一下RSA公私钥的ASN.1的结构。

     ASN.1的编码回头会专门介绍,为了便于理解:SEQUENCE,暂时就理解为C语言里面的结构体就好;INTEGER,理解为正数类型就好。

 

     RSA公钥:

     RSAPublicKey :: = SEQUENCE{

         modulus              INTEGER,   ------ n(模长,正整数)

         publicExponent    INTEGER    ------ e (指数,3~n-1范围内的正整数)

      }

     RSA公钥的ASN.1结构,可以表述为:名为RSAPublicKey的这个结构呢,就可以用来表述一个RSA公钥了。它有两个INTEGER型变量:modulus和publicExponent。

 

     RSA私钥:

     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(当version为0时,不存在;当 version为1时,必须有)

     }

     Version :: = INTEGER{ two-prime(0), multi(1)}

     版本号的ASN.1结构可以表述为:名为Version的结构体,用于描述版本信息。它类似于枚举类型,其变量类型为INTEGER,取值为0或1。

 

     OtherPrimeInfos :: = SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo

     OtherPrimeInfos 是由 OtherPrimeInfo组成的数组

 

     OtherPrimeInfo :: = SEQUENCE {

        prime          INTEGER,   --- ri

        exponent     INTEGER,   --- di

        coefficient    INTEGER    --- ti

     }

     推荐一篇专门介绍ASN.1编码的文章:《ASN.1/BER/DER 编码子集入门指南》

posted @ 2016-08-20 19:23  !--!  阅读(2300)  评论(0编辑  收藏