Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取ASN.1 DER编码的RSA公钥_C#_Cryptography_Rsa_Asn.1 - Fatal编程技术网

C# 读取ASN.1 DER编码的RSA公钥

C# 读取ASN.1 DER编码的RSA公钥,c#,cryptography,rsa,asn.1,C#,Cryptography,Rsa,Asn.1,我正在编写一个应用程序来更好地了解DKIM。规范说我从域TXT记录中检索“ASN.1 DER编码”公钥。我可以在“s1024._domainkey.yahoo.com”=“migfma0gcsqgsib3dqebaquaa4gnadcbiqbgqdreee0ri4juz+QfiWYui/E9UGSXau/2P8LjnTD8V4Unn+2fazvgge3kl23bzeoulyv4peleb3gfm”上看到密钥 如何使用.net中的此密钥?我看到的示例从X509Certificate2或包含参数的X

我正在编写一个应用程序来更好地了解DKIM。规范说我从域TXT记录中检索“ASN.1 DER编码”公钥。我可以在“s1024._domainkey.yahoo.com”=“migfma0gcsqgsib3dqebaquaa4gnadcbiqbgqdreee0ri4juz+QfiWYui/E9UGSXau/2P8LjnTD8V4Unn+2fazvgge3kl23bzeoulyv4peleb3gfm”上看到密钥

如何使用.net中的此密钥?我看到的示例从X509Certificate2或包含参数的XML文件中获取密钥

更正:我从network-tools.com DNS工具复制/粘贴了上面的密钥,该工具一定把它剪短了。nslookup为我提供了完整密钥:

s1024.\u domainkey.yahoo.com文本= “k=rsa;t=y;p=migfma0gcsqgsib3dqebaquaa4gnacbiqkbgqdreee0ri4juz+QfiWYui/E9UGSXau2P8LjnTD8V4Unn+2fazvge3kl23bzeoulyv4eleb3gfm” “JiDJOKU3Ns5L4KJAUUHjFwDebt0NP+sBK0VKeTATL2Yr/S3bTxhy+1xtj4rkdv7fvxtn56lb4udunhuxk4v5b5pdokj+XcwIDAQAB;n=1024位密钥;”


所以abelenky在BASE64上走对了

该字符串看起来像是某种base-64编码。
如果将该字符串从base-64转换为BLOB,则该字符串应为有效的ASN.1格式。

这是包含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的编码。整数是模和公指数


您可以使用解码base64,但我认为.NET没有解析PublicKeyInfos的内置功能,因此您需要使用第三方工具,如BouncyCastle。

试试库,它为这种情况提供了强大的功能。

对于任何对此感兴趣的人,我建议使用,它可以用来读取DER编码的公钥。

我尝试将其从BASE64转换过来-运气不好。这篇文章暗示了类似的事情?钥匙被切断了。。我已经用完整的答案更新了这个问题。现在,这确实更有意义了,谢谢。另请参见:和