有没有办法在 C# 中使用没有 IV 的 CBC 模式实现 TripleDES 加密?
Is there a way to implement TripleDES encryption using CBC mode without an IV in C#?
我必须将数据从 C# 应用程序发送到 JAVA 应用程序。 JAVA 开发人员表示他们已经使用 CBC 模式实现了 TripleDES (3DES) 加密来解密来自其他应用程序的消息。他们提供了以下信息以在发送消息之前加密消息。
加密:TripleDES (3DES)(对称)
模式:CBC
填充:PKCS5
IV(盐):没有使用IV/salt
请指导我,有没有办法在没有 IV/salt 的情况下实现 CBC 模式?
C# 中的 TripleDES 提供程序生成一个随机 IV(如果没有手动设置 IV)并且在不使用 IV 的情况下解密失败。
IV 对于 CBC 的实施至关重要 - 没有 IV 就无法使用 CBC,因为那样它就不再是 CBC,它是其他东西。
很可能其他开发团队使用了允许实现者省略 IV 的 CBC 实现,即使在幕后它随机生成一个或使用 IV 的零值。
澄清 - MindSwipe 是正确的,而 Java 开发人员是不正确的 - 他们只是没有意识到这一点,因为他们使用的库正在从他们那里抽象出需求。
我建议向 Java 开发人员解释以上内容,并要求他们确认使用的 IV 是否只是零值,例如64 0 位。
我必须将数据从 C# 应用程序发送到 JAVA 应用程序。 JAVA 开发人员表示他们已经使用 CBC 模式实现了 TripleDES (3DES) 加密来解密来自其他应用程序的消息。他们提供了以下信息以在发送消息之前加密消息。
加密:TripleDES (3DES)(对称) 模式:CBC 填充:PKCS5 IV(盐):没有使用IV/salt
请指导我,有没有办法在没有 IV/salt 的情况下实现 CBC 模式? C# 中的 TripleDES 提供程序生成一个随机 IV(如果没有手动设置 IV)并且在不使用 IV 的情况下解密失败。
IV 对于 CBC 的实施至关重要 - 没有 IV 就无法使用 CBC,因为那样它就不再是 CBC,它是其他东西。
很可能其他开发团队使用了允许实现者省略 IV 的 CBC 实现,即使在幕后它随机生成一个或使用 IV 的零值。
澄清 - MindSwipe 是正确的,而 Java 开发人员是不正确的 - 他们只是没有意识到这一点,因为他们使用的库正在从他们那里抽象出需求。
我建议向 Java 开发人员解释以上内容,并要求他们确认使用的 IV 是否只是零值,例如64 0 位。