[ACCEPTED]-Reading a ASN.1 DER-encoded RSA Public key-asn.1

Accepted answer
Score: 11

This is the base64-encoding of the DER-encoding 9 of an ASN.1 PublicKeyInfo containing an 8 RSA public key.

Here is a translation:

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

The 7 OBJECT IDENTIFIER indicates that the following 6 BIT STRING contains the encoding of an RSAPublicKey. The 5 INTEGERs are the modulus and the public 4 exponent.

You can decode the base64 with 3 Convert.FromBase64String, but I don't think .NET has built-in functionality 2 for parsing PublicKeyInfos, so you need 1 to use a 3rd party tool like BouncyCastle.

Score: 6

For anyone interested in this matter I would 2 suggest the System.Security.Cryptography.X509Certificates.PublicKey which can be used to read a 1 DER encoded public key.

Score: 2

That string looks like its some sort of 3 base-64 encoding. If you convert that string 2 from base-64 to a BLOB, it should then be 1 in valid ASN.1 format.

Score: 1

Try the bouncycastle library, it provides great functionality 1 for such cases.

More Related questions