PKCS#1種介紹了哈希算法的OID等的ASN.1結構,由於使用ASN.1的解碼工具(好比:ASN1View)時,會自動顯示出各OID的含義,因此這裏就不說明了。下面就只簡單摘抄一下RSA公私鑰的ASN.1的結構。算法
ASN.1的編碼回頭會專門介紹,爲了便於理解:SEQUENCE,暫時就理解爲C語言裏面的結構體就好;INTEGER,理解爲正數類型就好。數組
RSA公鑰:工具
RSAPublicKey :: = SEQUENCE{編碼
modulus INTEGER, ------ n(模長,正整數)ci
publicExponent INTEGER ------ e (指數,3~n-1範圍內的正整數)io
}入門
RSA公鑰的ASN.1結構,能夠表述爲:名爲RSAPublicKey的這個結構呢,就能夠用來表述一個RSA公鑰了。它有兩個INTEGER型變量:modulus和publicExponent。變量
RSA私鑰:im
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 編碼子集入門指南》