2009-08-15 10 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; T yを=; P = MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz + QfiWYui/E9UGSXau2P8LjnTD8V4Unn + 2FAZVGE3kL23bzeoULYv4PeleB3gfm" 「JiDJOKU3Ns5L4KJAUUHjFwDebt0NP + sBK0VKeTATL2Yr/S3bTxhy + 1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj + XcwIDAQAB; n = 1024ビット鍵;

だからabelenkyは

+0

参照:http://unix.stackexchange.com/a/30074/22709およびhttps://web.archive.org/web/20120124211352/http://blog.oddbit.com/2011/05/ conversion-openssh-public-keys.html –

答えて

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 
      :   } 
      :  } 
      : } 

オブジェクト識別子は、次のビット列がのRSAPublicKeyのエンコーディングが含まれていることを示しています。 INTEGERはモジュラスと公開指数です。

でbase64をデコードできますが、.NETにはPublicKeyInfosの解析機能が組み込まれているとは思わないので、BouncyCastleのようなサードパーティのツールを使用する必要があります。

+0

キーが短く切られました。私は完全な質問を更新しましたキー。これは今、感謝します。 – russau

2

その文字列がベース-64エンコーディングのそのいくつかの並べ替えのように見えます。.. BASE64で正しい軌道に乗っていました。 その文字列を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

1

bouncycastleライブラリを試してみてください。このような場合には、優れた機能を提供します。