Кодировать с помощью RSA / ECB / OAEPWithSHA-1AndMGF1Padding в C # - PullRequest
2 голосов
/ 12 марта 2019

Мне нужно зашифровать некоторый текст в C # .NET 4.7.2, и шифр, который мне нужно использовать, - это RSA / ECB / OAEPWithSHA-1AndMGF1Padding.Однако встроенный класс C # RSACryptoServiceProvider, похоже, не имеет заполнения MGF1.

Как зашифровать с помощью открытого ключа и RSA / ECB / OAEPWithSHA-1AndMGF1Padding?

Код, который у меня сейчас есть:

var cert = new X509Certificate2('path to certificate');
var rsa = cert.PublicKey.Key as RSACryptoServiceProvider;
var dataToEncrypt = ASCIIEncoding.ASCII.GetBytes(data);
var encryptedByteArray = rsa.Encrypt(dataToEncrypt, true).ToArray();

return Convert.ToBase64String(encryptedByteArray);

1 Ответ

2 голосов
/ 12 марта 2019
RSA rsa = ...;
byte[] encrypted = rsa.Encrypt(data, RSAEncryptionPadding.OaepSha1);

MGF-1 - единственная функция генерации маски, определенная RFC, поэтому она подразумевается.

Также старайтесь избегать прямого использования RSACryptoServiceProvider. Если вы используете старую версию и должны это сделать, то передача true в ее параметр fOAEP такая же, как и запрос OaepSha1 из новой перегрузки.

...