這是ASN.1 SubjectPublicKeyInfo
結構的DER編碼的Base64,其定義在RFC 5280(關於ASN.1定義請參閱4.1節,關於附加文字說明請參閱第4.1.2.7節)。
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
subjectPublicKey
字段的內容取決於其由algorithm
字段中指定的密鑰算法上。
對於RSA,這將是RFC 3447
RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER -- e
}
定義RSAPublicKey
結構如果您選擇的編程語言支持RSA加密,最有可能它提供了一個類或結構或其他特定語言的方式來讀取通用SubjectPublicKeyInfo
數據並將其轉換爲可以訪問RSA特定數據的某種表示形式。例如,在Java中
byte[] bytes = javax.xml.bind.DatatypeConverter.parseBase64Binary("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQAB");
X509EncodedKeySpec genericKeySpec = new X509EncodedKeySpec(bytes);
KeyFactory factory = KeyFactory.getInstance("RSA");
PublicKey publicKey = factory.generatePublic(genericKeySpec);
RSAPublicKeySpec rsaKeySpec = factory.getKeySpec(publicKey, RSAPublicKeySpec.class);
System.out.println("n = " + rsaKeySpec.getModulus());
System.out.println("e = " + rsaKeySpec.getPublicExponent());
很高興知道它爲什麼被低估! – user3001408
因爲讀取產生該密鑰表示的方法的文檔會給你答案。 –
@OlegEstekhin在寫之前想想。 OP可能通過電子郵件收到了此信息,在網站上閱讀等。 –