利用BouncyCastle实现TEA算法

本文关键字:算法 TEA 实现 BouncyCastle 利用 | 更新日期: 2023-09-27 18:06:21

我试图将使用BouncyCastle的RSA算法的havard Stranden示例(http://ox.no/posts/rsa-using-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()));

但是我总是得到一个错误。对如何实现它有什么想法吗?

Thanks in advance

编辑:抱歉没有发布错误日志,但我在晚些时候发布了这个,然后忘记了它

是这样的:At . init (true, new KeyParameter(Encoding.UTF8.GetBytes("MyPassword"))));我得到的是"索引超出了数组的边界"

利用BouncyCastle实现TEA算法

TEA使用128位密钥,即16字节。使用16字节长的密码(或使用密钥派生函数从更短的密码中获得16字节的密钥):

e.Init(true, new KeyParameter(Encoding.UTF8.GetBytes("MyPassword123456")));