我很好奇,因为RSA不是分组密码,但Encrypt()方法可以接受任意数量的数据加密。
是否使用AES + RSA混合加密?或者它只是使用RSA(错误地)作为分组密码?
答案 0 :(得分:3)
然而,Encrypt()方法可以使用任意数量的数据来加密
根据MSDN,它不能
rgb参数的最大长度
模数大小-2 -2 * hLen,其中hLen是散列的大小。
它甚至有CryptographicException
,表示“rgb参数的长度大于允许的最大长度。”。
答案 1 :(得分:1)
是否使用AES + RSA混合加密?
否它没有。如果这是您正在寻找的,那么您必须自己动手或查看我对该主题的旧blog条目。
或者仅仅使用RSA(错误地)作为分组密码?
否它没有。它将对提供的byte[]
应用填充(PKCS#1 1.5或OAEP)并对其进行加密。因此确实具有长度限制(正如其他人已经指出的那样)。
这是它的样子(来自Mono的BCL源代码)。
public byte[] Encrypt (byte[] rgb, bool fOAEP)
{
// choose between OAEP or PKCS#1 v.1.5 padding
AsymmetricKeyExchangeFormatter fmt = null;
if (fOAEP)
fmt = new RSAOAEPKeyExchangeFormatter (rsa);
else
fmt = new RSAPKCS1KeyExchangeFormatter (rsa);
return fmt.CreateKeyExchange (rgb);
}