Frage

Ich schreibe eine app, ein besseres Verständnis von DKIM zu bekommen. Die Spezifikation sagt, dass ich ein „ASN.1 DER-codierten“ öffentlichen Schlüssel aus der Domäne TXT-Datensatz abzurufen. Ich kann den Schlüssel auf "s1024._domainkey.yahoo.com" gesehen = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz + QfiWYui / E9UGSXau / 2P8LjnTD8V4Unn + 2FAZVGE3kL23bzeoULYv4PeleB3gfm".

Wie kann ich diesen Schlüssel aus .net verwenden? Die Beispiele, die ich habe von einem X509Certificate2 bekommen den Schlüssel gesehen, oder eine XML-Datei, die die RSAParameters enthält.

KORREKTUR : Ich Kopieren / Einfügen der Schlüssel oben vom network-tools.com DNS-Tool, das es kurz must've schneiden. nslookup gibt mir den vollen Schlüssel:

  

s1024._domainkey.yahoo.com text =   "K = RSA-; t = y; p = MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz QfiWYui + / + E9UGSXau2P8LjnTD8V4Unn 2FAZVGE3kL23bzeoULYv4PeleB3gfm"   "JiDJOKU3Ns5L4KJAUUHjFwDebt0NP sBK0VKeTATL2Yr + / + S3bTxhy 1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj + XcwIDAQAB; n = 1024-Bit-Schlüssel;"

So war abelenky auf dem richtigen Weg mit BASE64 ..

War es hilfreich?

Lösung

Dies ist die Base64-Codierung der DER-Codierung eines ASN.1 PublicKeyInfo einen öffentlichen RSA-Schlüssel enthält.

Hier ist eine Übersetzung:

   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 Das zeigt an, dass die folgende BIT STRING die Codierung eines RSAPublicKey enthält. Die ganzen Zahlen sind die Modul und der öffentliche Exponent.

Sie können die Base64 dekodieren mit Convert.FromBase64String , aber ich glaube nicht, .NET-Funktionalität wird in integrierte für PublicKeyInfos Parsen, so benötigen Sie ein 3rd-Party-Tool wie BouncyCastle verwenden.

Andere Tipps

Für alle mit Interesse in dieser Angelegenheit würde ich vorschlagen, die System.Security.Cryptography.X509Certificates.PublicKey , die verwendet werden kann, eine DER-codiert öffentlichen Schlüssel zu lesen.

Dieser String sieht aus wie seine irgendeine Art von Basis-64-Codierung. Wenn Sie diese Zeichenfolge von der Basis-64 zu einem BLOB konvertieren, sollte es dann in gültigem ASN.1-Format sein.

Versuchen Sie die bouncycastle Bibliothek, es bietet große Funktionalität für solche Fälle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top