[英]How does the C# RSACryptoServiceProvider Encrypt() method work?
我很好奇,因為RSA不是分組密碼,但Encrypt()方法可以采用任意數量的數據進行加密。
它是否使用AES + RSA混合加密? 或者它只是使用RSA(錯誤地)作為分組密碼?
但Encrypt()方法可以采用任意數量的數據進行加密
根據MSDN它不能
rgb參數的最大長度
模數大小-2 -2 * hLen,其中hLen是散列的大小。
它甚至有一個CryptographicException
,顯示“rgb參數的長度大於允許的最大長度。”。
它是否使用AES + RSA混合加密?
不 ,不。 如果這是你正在尋找的,那么你必須自己做或者查看關於這個主題的舊博客條目。
或者它只是使用RSA(錯誤地)作為分組密碼?
不 ,不。 它將填充(PKCS#1 1.5或OAEP)應用於提供的byte[]
並加密它。 因此確實有長度限制(正如其他人已經指出的那樣)。
這是它的樣子(來自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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.