【问题标题】:How to encrypt a serialized object with DES(CBC mode) in Java?如何在 Java 中使用 DES(CBC 模式)加密序列化对象?
【发布时间】:2011-06-25 22:33:27
【问题描述】:

我正在阅读这篇关于序列化的article。

这是我第一次看到对序列化对象进行加密。 我正在尝试加密一些可序列化的对象,然后将它们保存到文件中。 但是本文的示例使用了众所周知的 ECB 模式,该模式会泄露有关加密明文的信息。我想知道,如何加密序列化对象 通过使用CBC而不是ECB模式?

为了使用 CBC,需要一个初始向量。此向量必须与序列化对象一起保存,但如果向量被加密,则我们无法找到该向量以解密对象。

另外,是否可以说初始向量将作为明文保存在保存可序列化对象的文件中。但是那文件不会被销毁吗?

使用 CBC 模式的示例将非常有用。

【问题讨论】:

  • 如果您担心安全漏洞,请不要使用 DES——它已被破坏。使用 3DES 或 AES。
  • 我不确定 Java 方面的情况,但在 CBC 中,您应该存储未加密的 IV,否则没有人可以解密结果消息。它不会泄漏任何东西,因为只要 IV 从未重复,攻击者就无法使用它做任何事情,因为它被输入到 PRF 的分组密码中。

标签: java serialization encryption des


【解决方案1】:

有一个不错的 SO 问题和答案about using 3DES here。 IV 是密码/密钥的摘要。那里引用的解决方案可以通过适当的序列化机制扩展到ByteArrayOutputStream 或直接到/来自FileOutputStream。

(无论如何都不是专家,但已经指出了 SO 上的内容......)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 2010-11-02
    • 2021-10-11
    • 2020-12-04
    • 1970-01-01
    相关资源
    最近更新 更多