Когда вы расшифровываете, вы можете создать один массив для буфера расшифровки и использовать его повторно:
Кроме того, обычно RSA используется для шифрования симметричного ключа для чего-то вроде AES, а симметричный алгоритм используется для шифрования фактических данных. Это чрезвычайно быстрее для всего, что длиннее 1 блока шифров. Чтобы расшифровать данные, вы расшифровываете симметричный ключ с помощью RSA, а затем расшифровываете данные этим ключом.
byte[] buffer = new byte[BlockLength];
// ASSUMES SOURCE IS padded to BlockLength
for (int i = 0; i < source.Length; i += BlockLength)
{
Buffer.BlockCopy(source, i, buffer, 0, BlockLength);
// ... decode buffer and copy the result somewhere else
}
Редактировать 2: Если вы храните данные в виде строк, а не в виде необработанных байтов, используйте Convert.ToBase64String()
и Convert.FromBase64String()
в качестве наиболее безопасного решения для преобразования.
Правка 3: Из его правки:
private static List<byte[]> splitByteArray(string longString)
{
byte[] source = Convert.FromBase64String(longString);
List<byte[]> result = new List<byte[]>();
for (int i = 0; i < source.Length; i += 128)
{
byte[] buffer = new byte[128];
Buffer.BlockCopy(source, i, buffer, 0, 128);
result.Add(buffer);
}
return result;
}