Encryption

如何從 RSA 公鑰中找到模數?

  • September 5, 2019

我正在研究 RSA 密碼系統。公鑰包括 $ (n, e) $ 、模數(兩個大素數的乘積)和加密指數。我想分離模數 $ n $ 和指數 $ e $ . 典型的公鑰以 base64 表示,具有以下類型:

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0
FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/
3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQAB

-----END PUBLIC KEY-----

現在從上面的鍵中,不清楚哪個部分是模數,哪個是指數。我怎樣才能提取這兩個?

RSA 密鑰格式至少在RFC 3447RFC 5280中定義。該格式基於 ASN.1,不僅包括原始模數和指數。

如果您解碼 base 64 編碼的 ASN.1,您會發現一些包裝(如對象標識符)以及內部 ASN.1 位串,解碼為:

(
   119445732379544598056145200053932732877863846799652384989588303737527328743970559883211146487286317168142202446955508902936035124709397221178664495721428029984726868375359168203283442617134197706515425366188396513684446494070223079865755643116690165578452542158755074958452695530623055205290232290667934914919, 
   65537
)

前者是2048位模數 $ n $ 後者是公共指數 $ e $ ,通常選擇為 3 或,如此處,65537。要對任意鍵執行相同操作,您至少需要閱讀ASN.1,或者使用現有的解碼器

引用自:https://crypto.stackexchange.com/questions/18031