Шифрование RSA в .NET 4.8 с использованием RSAEncryptionPadding.OaepSHA256C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Шифрование RSA в .NET 4.8 с использованием RSAEncryptionPadding.OaepSHA256

Сообщение Anonymous »

В .NET 8 я использую следующий код шифрования RSA (упрощенный):

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

    public static string EncryptWithPublicKey(string text, string keyString)
{
var rsa = RSA.Create();
rsa.ImportRSAPublicKey(Convert.FromBase64String(keyString), out _);
var dataBytes = Encoding.UTF8.GetBytes(text);
var encryptedBytes = rsa.Encrypt(dataBytes, RSAEncryptionPadding.OaepSHA256);
return Convert.ToBase64String(encryptedBytes);
}

public static string DecryptWithPrivateKey(string cipherText, string keyString)
{
var rsa = RSA.Create();
rsa.ImportRSAPrivateKey(Convert.FromBase64String(keyString), out _);
var encryptedBytes = Convert.FromBase64String(cipherText);
var decryptedBytes = rsa.Decrypt(encryptedBytes, RSAEncryptionPadding.OaepSHA256);
return Encoding.UTF8.GetString(decryptedBytes);
}

public static KeyPair GenerateKeyPair()
{
using RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
{
return new KeyPair() { PrivateKey = Convert.ToBase64String(rsa.ExportRSAPrivateKey()), PublicKey = Convert.ToBase64String(rsa.ExportRSAPublicKey()) };
}
}
Мне нужно перенести это в проект .NET 4.8, но похоже, что платформа поддерживает только SHA1 — так ли это?
Я пробовал использовать надувной замок и расширения, такие как https://gist.github.com/valep27/4a720c2 ... 516f847863, которые позволили мне выполнить базовую генерацию ключей, а затем некоторое шифрование/дешифрование с использованием RSAEncryptionPadding.OaepSHA1, но мне нужно для поддержки SHA256. Есть ли у кого-нибудь примеры этого, поскольку я немного застрял!
ОБНОВЛЕНИЕ
Код, который я использую в своем проекте .net, использует ссылку выше и выглядит так:

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

public static string EncryptWithPublicKey(string text, string keyString)
{
var rsa = RSAKeys.ImportPublicKey(keyString);
var dataBytes = Encoding.UTF8.GetBytes(text);
var encryptedBytes = rsa.Encrypt(dataBytes, RSAEncryptionPadding.OaepSHA256);
return Convert.ToBase64String(encryptedBytes);
}

public static KeyPair GenerateKeyPair()
{
var rsacp = new RSACryptoServiceProvider();

var privateKey = RSAKeys.ExportPrivateKey(rsacp);
var publicKey = RSAKeys.ExportPublicKey(rsacp);

return new KeyPair() { PrivateKey = privateKey, PublicKey = publicKey };
}
Но когда он запускает метод шифрования, он говорит: «Указанный режим заполнения недействителен для этого алгоритма». Если я изменю отступ на SHA1, это сработает

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

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

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

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

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

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

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