您的问题的直接答案是“不”——它不会对加密强度产生任何明显的影响。是的,MD5 被破坏了,但实际上它的弱点在这个特定的应用程序中没有任何区别。AES 的密钥大小为 128、192 和 256 位。您在这里所做的只是为密钥创建一个字符串假名(可以是 16 字节、24 字节或 32 字节)。当密码学专家说散列函数被破坏时,他们的意思是,给定一个已知的散列输出,计算与原始消息不同的消息是可行的,原始消息也散列到相同的输出。换句话说,为了使散列函数的加密强度或弱点具有任何意义,二进制密钥必须已经为恶意方所知,这意味着它仅在您的安全性已经完全失败时才相关。
散列算法的强度与非对称密码的强度完全无关。
然而...
但是,更严重的问题是您的代码中没有加盐。除非您打算手动加盐(不太可能),否则您的通信很容易受到重放攻击。如果您使用 ECB 模式,这将变得更糟,但如果不加盐,这对于任何模式都是一个主要的安全问题。“加盐”意味着在加密之前在 IV 或消息的头部注入足够大的不可预测的非重复值。
这凸显了 DCPCrypt 的一个巨大问题。大多数 DCPcrypt 用户对密码学的了解不足,无法理解正确加盐的重要性,并且会以您所拥有的方式使用密码组件。当您以这种方式使用 DCPcrypt(这很自然)时,DCPcrypt 不会加盐。事实上,它将 IV 设置为零。而且情况变得更糟...如果您选择了一种密钥流类型的链接模式(非常流行),并且您的 IV 习惯性为零,那么如果已知或猜到一条纯文本消息,您的安全性将完全被破坏, (或者甚至只是消息的一部分被猜到)。DCPcrypt 确实提供了另一种方法来初始化二进制密钥(不是从字符串),同时允许用户设置 IV(您必须自己生成一个随机 IV)。下一个问题是整个 IV 管理变得有点复杂。
披露
我是TurboPower LockBox 3的作者。Dave Barton 的 DCPcrypt 是一部令人钦佩的综合性工程作品,是我编写 LockBox 3 的灵感之一。