【问题标题】:How do make my encryption algorithm encrypt more than 128 bits?如何让我的加密算法加密超过 128 位?
【发布时间】:2011-02-28 02:43:56
【问题描述】:

好的,现在我已经为 AES-128 的实现进行了编码:) 它工作正常。

取128位,加密返回128位

那么我如何增强我的功能,使其可以处理超过 128 位?

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

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

函数定义为

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

}

【问题讨论】:

  • ... 是的... 128 位是指密钥大小,而不是它通常可以处理的数据大小。您似乎有点困惑......您如何测试您的 AES 实现是否正确?
  • 实际上没有,我已经实现了 AES 128 位版本。 AES 可以处理的密钥大小是 128,192 和 256 位。但无论密钥大小如何,它一次只能处理 128 位 :)
  • @Ranhiru 那你实现错了。
  • AES 的块大小是 128 位 - 因此 AES 只能对 128 位块进行编码,而不管密钥大小。

标签: c# string file-io aes


【解决方案1】:

您可以在多种“链式”或“密码本”模式中运行分组密码。您需要阅读它们并决定要支持哪种模式。您还需要决定为部分填充的接线端子使用哪种类型的块填充。

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

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

如果您还没有一份Applied Cryptography,请获取一份。这是我读过的最好的这类东西的介绍,尽管它现在已经很长了。

【讨论】:

  • +1 用于回答问题。如果你做的不仅仅是研究……你还想获得大约 4 个理论和应用数学博士学位,大约 3 个计算机科学博士学位,2 个密码学博士学位,然后在 NSA 或类似机构工作 15 年以上。 .那么你可能已经准备好了:)
【解决方案2】:

首先,不要自己实现加密算法 - 使用专家创建的实现。您很可能会犯错误并构建不安全的系统。 .NET 框架在 System.Security 命名空间(包括 AES algorithm imlementation)中具有广泛的内置加密支持。 (如果你是为了好玩,前者不适用;)

编码数据块大小越大,您必须选择一种操作模式。维基百科列出了最常见的here 和一些更常用于磁盘加密的here

【讨论】:

    【解决方案3】:

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

    如果这发生在任何地方生产系统、机密数据等 - 就停在那里。永远不要编写自己的加密代码。有一百万种非常微妙的方法可以把它搞砸,只有一种方法可以让它正确。我敢肯定你是个普通的天才,但很有可能你会在不知情的情况下无意中编写出巧妙破坏、容易被破坏的代码;每个人都这样做 - 这就是它的工作原理。

    如果这是一个真正的项目,请帮自己一个大忙,并使用一些久经考验的加密库,这些加密库曾遭受过巨大的财富之箭,在野外生活的考验中幸存下来,被攻击、修补和还站着。

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

    【讨论】:

    • 没有任何加密算法被破解然后被修复(至少在它们达到 AES/DES 标准后没有)。它们已损坏,然后不再使用。
    • 别想着为美国宇航局的专家们制造火箭飞船,也别想着用原料做饭,而是用微波炉加热即食。
    • 不,真的。使用别人的密码系统。不要建立自己的。大多数业界最严重的安全问题(如著名的 LANMAN 哈希)都是因为聪明的开发人员处理安全代码的方式与他们处理其余代码的方式相同。安全码和应用程​​序代码的区别在于,当应用程序代码失败时,您会立即发现。当安全代码失效时,您会发现 4 年后,一张包含您所有客户信用卡和 CVV2 信息的 DVD 开始在爱沙尼亚流通。 (来源:securityfocus.com/blogs/262
    • @Daniel:这是一些非常糟糕的建议。
    • @Daniel:“使用别人的密码系统”。但我真的不想进入它。我是否正确,您可以自己决定。
    【解决方案4】:

    有一个 C++ 开源库 Crypto++ http://www.cryptopp.com/ 尽管您似乎正在尝试在 Java 中实现它,但我认为也许值得一看。毕竟都是算法……

    【讨论】:

    猜你喜欢
    • 2011-02-15
    • 2021-02-14
    • 2016-05-26
    • 1970-01-01
    • 2019-08-17
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多