好的,现在我编写了AES-128的实现:) 它工作正常。
它接收128位,加密并返回128位
那么如何增强我的功能以便它可以处理超过128位?
如何使加密算法处理更大的字符串?
可以使用相同的算法加密文件吗? :)
功能定义是
public byte[] Cipher(byte[] input)
{
}
答案 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。 (如果你为了好玩而这样做,前者不适用;)
答案 3 :(得分:1)
有一个C ++开源库Crypto ++ http://www.cryptopp.com/ 虽然看起来你正试图用Java实现它,但我想也许值得一看。毕竟,这完全是算法......