Использует ли он гибридное шифрование AES + RSA?
Нет это не так. Если это то, что вы ищете, то вы должны сделать это сами или проверить мою старую запись blog на эту тему.
Или он просто использует 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);
}