Реализация алгоритма TEA с использованием BouncyCastle

Я пытался адаптировать пример Håvard Stranden (http://ox.no/posts/rsa-using-bouncycastle) алгоритма RSA с использованием BouncyCastle в алгоритм TEA, используя также примеры, которые поставляются с BouncyCastle, и я сделал следующее. код для шифрования моей строки:

byte[] data = Encoding.UTF8.GetBytes("This is an encoding test!!!...");

TeaEngine e = new TeaEngine();
e.Init(true, new KeyParameter(Encoding.UTF8.GetBytes("MyPassword")));

int blockSize = e.GetBlockSize();

byte[] outBytes = new byte[data.Length];

List<byte> output = new List<byte>();
for (int chunkPosition = 0; chunkPosition < data.Length; chunkPosition += blockSize)
{
    int chunkSize = Math.Min(blockSize, data.Length - (chunkPosition * blockSize));
    if (e.IsPartialBlockOkay)
    {
            e.ProcessBlock(data, chunkPosition, outBytes, chunkPosition);
    }
    else
    {
            e.ProcessBlock(data, chunkPosition, outBytes, chunkPosition);
    }
}

Console.WriteLine("Encrypted: " + Encoding.UTF8.GetString(output.ToArray()));

Но я всегда получаю ошибку. Любая идея о том, как это реализовать?

заранее спасибо

РЕДАКТИРОВАТЬ: извините за то, что не опубликовал журнал ошибок, но я опубликовал это позже и забыл об этом.

Вот оно: At e.Init(true, new KeyParameter(Encoding.UTF8.GetBytes("MyPassword"))); Я получаю «Индекс был за пределами массива».


person Gonçalo Cardoso    schedule 19.08.2011    source источник
comment
С какой стати вы не включили фактическую ошибку, которую вы получаете, в свой вопрос? Мы должны читать ваши мысли?   -  person President James K. Polk    schedule 20.08.2011
comment
Я читаю мысли только по вторникам и четвергам. Это дело союза.   -  person    schedule 20.08.2011


Ответы (1)


TEA использует 128-битный ключ, т. е. 16 байт. Используйте пароль длиной 16 байт (или используйте функцию получения ключа, чтобы получить 16-байтовый ключ из более короткого пароля):

e.Init(true, new KeyParameter(Encoding.UTF8.GetBytes("MyPassword123456")));
person Bradley Grainger    schedule 20.08.2011