/// <summary>
/// 加密
/// </summary>
/// <param name="rsa"></param>
/// <param name="data"></param>
/// <param name="padding"></param>
/// <returns></returns>
private static byte[] Encrypt(System.Security.Cryptography.RSA rsa, byte[] data, RSAEncryptionPadding padding = null)
{
padding ??= RSAEncryptionPadding.Pkcs1;
byte[] result;
var maxLength = rsa.KeySize / 8 - PaddingLength[padding];
// 长数据分割
if (maxLength < data.Length)
{
var pointer = 0;
var resBytes = new List <byte>();
while (pointer < data.Length)
{
var length = pointer + maxLength > data.Length ? data.Length - pointer : maxLength;
resBytes.AddRange(rsa.Encrypt(data.Skip(pointer).Take(length).ToArray(), padding));
pointer += maxLength;
}
result = resBytes.ToArray();
}
else
{
result = rsa.Encrypt(data, padding);
}
return(result);
}