2009-08-15 175 views
3

我在編寫應用程序以更好地理解DKIM。規範說我從域TXT記錄中檢索「ASN.1 DER編碼」公鑰。我可以看到「s1024._domainkey.yahoo.com」上的密鑰=「MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz + QfiWYui/E9UGSXau/2P8LjnTD8V4Unn + 2FAZVGE3kL23bzeoULYv4PeleB3gfm」。閱讀ASN.1 DER編碼的RSA公鑰

如何從.net使用此密鑰?我見過的示例從X509Certificate2或包含RSAParameters的XML文件獲取密鑰。

更正:我從network-tools.com的DNS工具複製/粘貼上面的密鑰,它必須將它縮短。 NSLOOKUP給我的全鍵:

s1024._domainkey.yahoo.com文本= 「K = RSA;噸= Y; P = MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz + QfiWYui/E9UGSXau2P8LjnTD8V4Unn + 2FAZVGE3kL23bzeoULYv4PeleB3gfm」 「JiDJOKU3Ns5L4KJAUUHjFwDebt0NP + sBK0VKeTATL2Yr/S3bTxhy + 1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj + XcwIDAQAB; n = 1024位密鑰;「

所以abelenky是正確的軌道上BASE64 ..

+0

另請參閱:http://unix.stackexchange.com/a/30074/22709和https://web.archive.org/web/20120124211352/http://blog.oddbit.com/2011/05/轉換 - openssh-public-keys.html – 2015-07-08 02:02:04

回答

10

這是包含RSA公共密鑰的ASN.1 PublicKeyInfo的DER編碼的base64編碼。

這裏是一個翻譯:

0 30 159: SEQUENCE { 
    3 30 13: SEQUENCE { 
    5 06 9:  OBJECT IDENTIFIER '1 2 840 113549 1 1 1' 
    16 05 0:  NULL 
      :  } 
    18 03 141: BIT STRING 0 unused bits, encapsulates { 
    22 30 137:  SEQUENCE { 
    25 02 129:   INTEGER 
      :   00 EB 11 E7 B4 46 2E 09 BB 3F 90 7E 25 98 BA 2F 
      :   C4 F5 41 92 5D AB BF D8 FF 0B 8E 74 C3 F1 5E 14 
      :   9E 7F B6 14 06 55 18 4D E4 2F 6D DB CD EA 14 2D 
      :   8B F8 3D E9 5E 07 78 1F 98 98 83 24 E2 94 DC DB 
      :   39 2F 82 89 01 45 07 8C 5C 03 79 BB 74 34 FF AC 
      :   04 AD 15 29 E4 C0 4C BD 98 AF F4 B7 6D 3F F1 87 
      :   2F B5 C6 D8 F8 46 47 55 ED F5 71 4E 7E 7A 2D BE 
      :   2E 75 49 F0 BB 12 B8 57 96 F9 3D D3 8A 8F FF 97 
      :   73 
157 02 3:   INTEGER 65537 
      :   } 
      :  } 
      : } 

對象標識符表示以下BIT STRING包含RSAPublicKey的編碼。 INTEGER是模數和公開指數。

你可以使用Convert.FromBase64String來解碼base64,但我不認爲.NET具有解析PublicKeyInfos的內置功能,所以你需要使用像BouncyCastle這樣的第三方工具。

+0

關鍵是切短..我已經更新了全部問題鍵。這確實使現在更有意義,謝謝。 – russau 2009-08-15 10:33:16

2

該字符串看起來像它的某種基礎-64編碼。 如果您將該字符串從base-64轉換爲BLOB,則應該採用有效的ASN.1格式。

+0

我試過從BASE64轉換它 - 沒有運氣。這篇文章建議DER編碼是類似的東西? http://stackoverflow.com/questions/657989/identifying-whether-a-certificate-is-der-encoded-or-base-64-encoded – russau 2009-08-15 06:21:32