在 C# 中用 RSA/ECB/OAEPWithSHA-1AndMGF1Padding 加密
Encrpyt with RSA/ECB/OAEPWithSHA-1AndMGF1Padding in C#
我需要在 C# .NET 4.7.2 中加密一些文本,我需要使用的密码是 RSA/ECB/OAEPWithSHA-1AndMGF1Padding。然而,内置的 C# class、RSACryptoServiceProvider
似乎没有 MGF1 填充。
如何使用 public 密钥和 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 相同。
我需要在 C# .NET 4.7.2 中加密一些文本,我需要使用的密码是 RSA/ECB/OAEPWithSHA-1AndMGF1Padding。然而,内置的 C# class、RSACryptoServiceProvider
似乎没有 MGF1 填充。
如何使用 public 密钥和 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 相同。