Создание открытого ключа PKCS1 в Net Framework - PullRequest
2 голосов
/ 27 декабря 2010

Мне нужно создать RSA 1024-битный «Открытый ключ PKCS1 без заголовков PEM» и сохранить его в виде массива байтов. В сети. Framework У меня есть 2 массива: RSAParameters.Modulus и RSAParameters.Exponent (которые, как я понимаю, составляют открытый ключ). Как я могу преобразовать эти два массива в «открытый ключ PKCS1 без заголовков PEM»?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 декабря 2010

Если вам нужно кодировать только открытый ключ RSA, вы можете написать свою собственную обертку, это займет 5 строк кодирования. Открытый ключ RSA должен быть представлен в виде следующей структуры ASN.1:

RSAPublicKey :: = SEQUENCE { модуль INTEGER, - n publicExponent INTEGER - e }

Тем не менее, вам потребуется изучить некоторые основы ASN.1. Кроме того, вы должны убедиться, что вам нужно сохранять только в этом формате, приложения также могут требовать добавления алгоритм алгоритма.

1 голос
/ 27 декабря 2010

Должен быть более простой способ, но одним из них является использование библиотеки Bouncycastle C # и нескольких ее классов, как в следующем примере:

using System.Security.Cryptography;
using Org.BouncyCastle.Asn1;

    public static byte[] DEREncode(RSACryptoServiceProvider rsa)
    {
        RSAParameters rsaParams = rsa.ExportParameters(false);
        DerInteger n = new DerInteger(rsaParams.Modulus);
        DerInteger e = new DerInteger(rsaParams.Exponent);
        DerSequence seq = new DerSequence(new Asn1Encodable[] {n, e});
        return seq.GetEncoded();
    }
...