Шифрование и дешифрование RSA с помощью сертификата X509certificate2C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Шифрование и дешифрование RSA с помощью сертификата X509certificate2

Сообщение Anonymous »

Итак, мне нужно следующее:
  • Создать сертификаты для разработки, получить один для клиента и один для сервера.
    Получить пароль через API, закодированный от клиента, и расшифровать его на сервере.
Теперь мне удалось создать сертификаты по этой ссылке. Девушка дала пошаговые инструкции о том, как получить самоподписанные сертификаты, хранить их в магазине и т. д. Теперь та часть, с которой у меня возникли проблемы:

Мне удалось зашифровать свои данные с помощью этого кода:

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

public static string Encrypt(string stringForEncription, string PathToPrivateKey)
{
X509Certificate2 myCertificate;
try
{
myCertificate = new X509Certificate2(PathToPrivateKey, "Test123");
}
catch (Exception e)
{
throw new CryptographicException("Unable to open key file.");
}

RSACryptoServiceProvider rsaObj;
if (myCertificate.HasPrivateKey)
{
rsaObj = (RSACryptoServiceProvider)myCertificate.PrivateKey;
}
else
throw new CryptographicException("Private key not contained within certificate.");

if (rsaObj == null)
return String.Empty;

byte[] decryptedBytes;
byte[] array = Encoding.UTF8.GetBytes(stringForEncription);
try
{
decryptedBytes = rsaObj.Encrypt(array, false);
//decryptedBytes = rsaObj.Encrypt(Convert.FromBase64String(Base64EncryptedData), false);
}
catch (Exception e)
{
throw new CryptographicException("Unable to encrypt data.");
}

//    Check to make sure we decrpyted the string
if (decryptedBytes.Length == 0)
return String.Empty;
else
return System.Text.Encoding.UTF8.GetString(decryptedBytes);
}
Для ключевой переменной PathToPrivate я использую путь к моему клиенту ClientCert.pfx. Не знаю, стоит ли использовать какой-либо другой, но вот снимок папки со всеми сертификатами, которые я сделал:

Изображение


Теперь для расшифровки я использую следующий код:

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

 public static string DecryptEncryptedData(string Base64EncryptedData, string PathToPrivateKey)
{
X509Certificate2 myCertificate;
try
{
myCertificate = new X509Certificate2(PathToPrivateKey, "Test123");
}
catch (Exception e)
{
throw new CryptographicException("Unable to open key file.");
}

RSACryptoServiceProvider rsaObj;
if (myCertificate.HasPrivateKey)
{
rsaObj = (RSACryptoServiceProvider)myCertificate.PrivateKey;
}
else
throw new CryptographicException("Private key not contained within certificate.");

if (rsaObj == null)
return String.Empty;

byte[] decryptedBytes;
try
{
decryptedBytes = rsaObj.Decrypt(Convert.FromBase64String(Base64EncryptedData), false);
}
catch (Exception e)
{
throw new CryptographicException("Unable to decrypt data.");
}

//    Check to make sure we decrpyted the string
if (decryptedBytes.Length == 0)
return String.Empty;
else
return System.Text.Encoding.UTF8.GetString(decryptedBytes);
}
И что бы я ни пытался сделать, у меня возникает исключение:

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

{"The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. "}
Буду очень признателен, если кто-нибудь мне поможет.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Невозможно создать подписку на Microsoft Graph API с использованием самозаверяющего сертификата C# X509Certificate2.
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Шифрование/дешифрование данных с помощью библиотеки Google Tink Swift ios
    Anonymous » » в форуме IOS
    0 Ответы
    74 Просмотры
    Последнее сообщение Anonymous
  • Шифрование и дешифрование 3DES для Java [закрыто]
    Гость » » в форуме JAVA
    0 Ответы
    74 Просмотры
    Последнее сообщение Гость
  • Совместимое шифрование и дешифрование AES для C# и javascript.
    Anonymous » » в форуме C#
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous
  • Шифрование и дешифрование PHP JWE [закрыто]
    Anonymous » » в форуме Php
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous

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