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 編碼子集入門指南》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM