【问题标题】:Implementing TEA algorithm using BouncyCastle使用 BouncyCastle 实现 TEA 算法
【发布时间】:2011-08-19 17:23:01
【问题描述】:

我试图将使用 BouncyCastle 的 RSA 算法的 Håvard 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()));

但我总是得到一个错误。关于如何实现它的任何想法?

提前致谢

编辑:很抱歉没有发布错误日志,但我在稍后发布并忘记了它

这里是: 在 e.Init(true, new KeyParameter(Encoding.UTF8.GetBytes("MyPassword")));我得到一个“索引超出了数组的范围。”

【问题讨论】:

  • 您到底为什么包含您在问题中遇到的实际错误?我们应该读懂你的想法吗?
  • 我只在周二和周四读心术。这是工会的事。

标签: c# encryption bouncycastle


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 2021-05-27
    • 2014-02-10
    • 1970-01-01
    相关资源
    最近更新 更多