Код: Выделить всё
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/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 };
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... oaepsha256