2009-08-15 68 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