我正在编写一个应用程序来更好地了解 DKIM。规范说我从域 TXT 记录中检索“ASN.1 DER 编码”公钥。我可以在“s1024._domainkey.yahoo.com”=“MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz+QfiWYui/E9UGSXau/2P8LjnTD8V4Unn+2FAZVGE3kL23bzeoULYv4PeleB3gfm”上看到密钥。
如何使用 .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=A 1024 位密钥;”
所以 abelenky 的 BASE64 走在正确的道路上。
这是包含 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
: }
: }
: }
OBJECT IDENTIFIER 指示以下 BIT STRING 包含 RSAPublicKey 的编码。 INTEGER 是模数和公共指数。
您可以使用以下命令解码 Base64Convert.FromBase64String,但我不认为 .NET 具有用于解析 PublicKeyInfos 的内置功能,因此您需要使用像 BouncyCastle 这样的第 3 方工具。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)