Как сгенерировать формат PEM открытого и закрытого ключа в MAUI C # 8.0 (android, iOS)C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как сгенерировать формат PEM открытого и закрытого ключа в MAUI C # 8.0 (android, iOS)

Сообщение Anonymous »

В Windows я использую следующий код для генерации общедоступных, частных ключей и ключей CSR с использованием OpenSSL и RSA с размером ключа 2048 бит в формате PEM.

Код: Выделить всё

string[] textArray1 = new string[] { "req -new -utf8 -nameopt multiline,utf8 -config \"", this.CNF_FILEPATH, "\" -newkey rsa:2048 -nodes -keyout \"", this.PRIVATEKEY_FILEPATH, "\" -out \"", this.CSR_FILEPATH, "\"" };
if (this.RunOpenSslWithArguments(string.Concat(textArray1)) == 0)
{
string[] textArray2 = new string[] { "rsa -in \"", this.PRIVATEKEY_FILEPATH, "\" -out \"", this.PUBLICKEY_FILEPATH, "\" -pubout -outform PEM" };
if (this.RunOpenSslWithArguments(string.Concat(textArray2)) == 0)
{
string CSRKey = File.ReadAllText(this.CSR_FILEPATH);
string PrivateKey = File.ReadAllText(this.PRIVATEKEY_FILEPATH);
string PublicKey = File.ReadAllText(this.PUBLICKEY_FILEPATH);
MessageBox.Show("The certificate request was successfully generated");
}
}

Код: Выделить всё

private int RunOpenSslWithArguments(string args)
{
int exitCode;
string path = @"C:\Program Files\OpenSSL-Win64\bin\openssl.exe";
if (!Environment.Is64BitOperatingSystem)
{
path = @"C:\Program Files\OpenSSL-Win32\bin\openssl.exe";
}
if (!File.Exists(path))
{
MessageBox.Show("The path to the certificate request generation tool is not valid" );
exitCode = -1;
}
else
{
System.Diagnostics.Process process = new System.Diagnostics.Process
{
StartInfo = {
WindowStyle =System.Diagnostics.ProcessWindowStyle.Hidden,
CreateNoWindow = true,
UseShellExecute = false,
FileName = path,
Arguments = args
}
};
process.Start();
process.WaitForExit();
exitCode = process.ExitCode;
}
return exitCode;
}
Раздел (1): для примера сгенерированного открытого ключа

Код: Выделить всё

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAph0TLX18fyIdj5e52yT1
rC1REhkotx5zKCbwMm0lKAjWEFDbDK6weNGBEnlIekS6h8wez7GHr65GckWqLPn0
9XqmMuVkXaBQFLhben+KC/j9Z89QZE4wE7PcOuUqzx8ZvfiTo2d1C89lYFuVS5xe
/RSL8YzqK2TpPm37j0TUXCOv8t4l5T7iZZsye9UxgqYXebBesCnM94GOUvoLvcTh
cRAMnsDKm9uXEh3/jzRZf6s0mUbSaqnoArUZwi+Ndao6h0MNVrH7vFMV4Ierznr9
5RPCMBh3n+rVlYAETU5FpMgRNbDk7s0E7ruX4QSl/WlhXoE75m2JZegzvQAqaCgI
LwIDAQAB
-----END PUBLIC KEY-----

**451 characters with 9 lines**
====================================== =========
Как реализовать это в MAUI для Android?
Я использую следующий код в MAUI Android< /p>

Код: Выделить всё

public static void GenerateKeys()
{
using (RSA rsa = RSA.Create(2048))
{
// Export the private key
var privateKey = rsa.ExportRSAPrivateKey();
var privateKeyPem = $"-----BEGIN PRIVATE KEY-----\n{Convert.ToBase64String(privateKey, Base64FormattingOptions.InsertLineBreaks)}\n-----END PRIVATE KEY-----";

// Export the public key
var publicKey = rsa.ExportRSAPublicKey();
var publicKeyPem = $"-----BEGIN PUBLIC KEY-----\n{Convert.ToBase64String(publicKey, Base64FormattingOptions.InsertLineBreaks)}\n-----END PUBLIC KEY-----";

Console.WriteLine("Private Key:\n" + privateKeyPem);
Console.WriteLine("Public Key:\n"  + publicKeyPem);
}
}
Раздел (2): Сгенерирован этот открытый ключ

Код: Выделить всё

-----BEGIN PUBLIC KEY-----
MIIBCgKCAQEAyTF/BTWz7BfvJwspprK22sVljBA1AcRBbCgpQUeyMBZtl4GDmgHs0IhTLRembdC/
alVNYbZqv6v3ptorTnUp2MfuI3Ffd0kge3X7yKWH3FUz/wXnu2hzJTd7Jf8NTCq429YgrVlE45Y5
GsKithqUZI9tMDyY/v76b7l6fHKkfRU/Mp3YuvcaRfqy7P7jzBXo69sB9qRPwg4Qn1XxwPCot4br
qF+xcekPb+N4lOEKKiepDg/8MEuyeJ6j1pfnzeL1ZtnMJLiAwq7lCn3mwt3qux1OIzlDbEGVExoT
sin3wWdB5KGDmoz8LqIgrq+UjmkNCT/ptbCsLJ+ZFAPksNClrwIDAQAB
-----END PUBLIC KEY-----

**419 characters with 8 lines**
Проблема здесь.
В Разделе(1) открытый ключ состоит из 451 символа и 9 строк , в разделе(2) открытый ключ состоит из 419 символов и 8 строк.
Раздел(1) правильный.
Я многое пробовал. Но желаемого результата я не получил

Подробнее здесь: https://stackoverflow.com/questions/791 ... -android-i
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»