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

Место общения программистов C#
Ответить
Anonymous
 Шифрование и дешифрование RSA с помощью x509Certificate2

Сообщение Anonymous »

So, what I need is next:
  • Create certifiactes for development, get one for the client and one for server
  • Retrieve password through API that is encoded from client and decode it on server
Now, I managed to create certifiactes following this связь. Девушка там дала пошаговые инструкции о том, как получить сертификаты, подписанные самостоятельно, поставить их в магазин и т. Д. ... Теперь, часть, с которой у меня есть проблема: < /p>

Мне удалось зашифровать мои данные, используя этот код: < /p>

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);
}
< /code>

Для переменной клавиши Pathtoprivate Я использую путь к своему клиенту clientcert.pfx. Я не знаю, следует ли мне использовать какой -либо другой, но вот снимка папки со всеми сертификатами, которые я сделал: < /p>

< /p>

Код: < /p>

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);
}
< /code>

и все, что я пытаюсь сделать, это дает мне исключение: < /p>

{"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. "}
< /code>

действительно оценил бы кого -то, кто мне помогает. < /p>

Подробнее здесь: https://stackoverflow.com/questions/422 ... rtificate2
Ответить

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

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

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

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

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