如何使我的加密算法加密超过128位?

时间:2010-06-05 08:46:54

标签: c# string file-io aes

好的,现在我编写了AES-128的实现:) 它工作正常。

它接收128位,加密并返回128位

那么如何增强我的功能以便它可以处理超过128位?

如何使加密算法处理更大的字符串?

可以使用相同的算法加密文件吗? :)

功能定义是

public byte[] Cipher(byte[] input)
{

}

4 个答案:

答案 0 :(得分:5)

有各种“链式”或“码本”模式,您可以运行分组密码。您需要阅读它们并确定您将支持哪些。您还需要确定对部分填充的接线端子块执行何种块填充。

首先阅读http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation

是的,当然你可以加密文件。您只需将块写入另一个文件。

如果您还没有Applied Cryptography,请获取该副本。这是我读过的最好的介绍,尽管现在已经很长了。

答案 1 :(得分:1)

如果这是一次学习练习,那就太好了 - 做别人说的话。

如果生产系统附近,机密数据等 - 停在那里。永远不要写自己的加密代码。有一百万种非常微妙的方法可以搞砸它,只有一种方法可以解决它。我敢肯定你是一个普通的天才和所有人,但很有可能的是,你会无意中写出微妙破碎,容易受到破坏的代码,甚至不知道它;每个人都这样做 - 这就是它的运作方式。

如果这是一个真正的项目,那么你自己也要大受欢迎,并使用一些久经考验的加密库,这些库已经遭受了巨大财富的掠夺和箭射,在野外世界的生命试验中幸存下来,受到攻击,打补丁,仍然站着。

此外,我相信你已经有足够的事情了。)

答案 2 :(得分:1)

首先,不要自己实施加密算法 - 使用专家创建的实现。很有可能会出错并构建一个不安全的系统。 .NET Framework在System.Security命名空间中对加密进行了广泛的内置支持,包括AES algorithm imlementation。 (如果你为了好玩而这样做,前者不适用;)

编码数据越大,您必须选择操作模式。维基百科列出了最常见的here以及更常用于光盘加密的here

答案 3 :(得分:1)

有一个C ++开源库Crypto ++ http://www.cryptopp.com/ 虽然看起来你正试图用Java实现它,但我想也许值得一看。毕竟,这完全是算法......