Код: Выделить всё
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()) };
}
}
Я пробовал использовать упругий замок и расширения, такие как https ://gist.github.com/valep27/4a720c25b35fff83fbf872516f847863, который позволил мне выполнить базовую генерацию ключей, а затем некоторое шифрование/дешифрование с использованием RSAEncryptionPadding.OaepSHA1, но мне нужно поддерживать SHA256. Есть ли у кого-нибудь примеры этого, поскольку я немного застрял!
Подробнее здесь: https://stackoverflow.com/questions/791 ... oaepsha256