我需要加密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);
RSA rsa = ...;
byte[] encrypted = rsa.Encrypt(data, RSAEncryptionPadding.OaepSha1);
到目前为止,MGF-1是RFC定义的唯一掩码生成函数,因此它是隐含的。
另外,尽量避免直接使用RSACryptoServiceProvider。如果你使用的是旧版本,那么将true
传递给它的fOAEP
参数与从新的重载请求OaepSha1相同。