gpt4 book ai didi

delphi - 使用的 DCPcrypt 加密和哈希算法

转载 作者:行者123 更新时间:2023-12-03 14:59:33 24 4
gpt4 key购买 nike

我正在使用 Delphi 2007 中的 DCPcrypt 库来加密内部应用程序的文本。

我当前正在使用以下代码(不是我的实际 key ):

  Cipher := TDCP_rijndael.Create(nil);
try
Cipher.InitStr('5t@ck0v3rf10w', TDCP_md5);
Result := Cipher.EncryptString('Test string');
finally
Cipher.Burn;
Cipher.Free;
end;

InitStr 的注释是:

Do key setup based on a hash of the key string

将 MD5 算法替换为 SHA2-256 或 SHA2-512 会对加密强度产生理论上或实际的影响吗?

最佳答案

您的问题的直接答案是“否” - 它不会对加密强度产生任何明显的影响。是的,MD5 被破坏了,但实际上它的弱点在这个特定的应用程序中没有任何区别。 AES 的 key 大小为 128、192 和 256 位。您在这里所做的就是为键创建一个字符串假名(16 字节、24 字节或 32 字节)。当密码学专家说哈希函数是 broken ,他们的意思是,给定一个已知的哈希输出,计算与原始消息不同的消息是可行的,该消息也哈希到相同的输出。换句话说,为了使散列函数的加密强度或弱点具有任何意义,二进制 key 必须已经为恶意方所知,这意味着它仅在您的安全性已被完全破坏时才相关。

哈希算法的强度与非对称密码的强度完全无关。

但是...

但是,更严重的问题是代码中缺乏加盐。除非您计划手动对消息加盐(不太可能),否则您的通信非常容易受到重放攻击。如果您使用 ECB 模式,情况会更糟,但如果不加盐,这对于任何模式来说都是一个主要的安全问题。 “加盐”是指在加密之前在 IV 中或消息的头部注入(inject)足够大的不可预测的非重复值。

这凸显了 DCPCrypt 的一个大问题。 DCPcrypt 的大多数用户对加密技术的了解不够,无法理解适当加盐的重要性,并且会按照您所拥有的方式使用加密组件。当您以这种方式使用 DCPcrypt 时(这是非常自然的),DCPcrypt 加盐。事实上,它将 IV 设置为零。情况会变得更糟......如果您选择了 key 流类型的链接模式(这是非常流行的),并且您的 IV 通常为零,那么如果已知或猜测单个明文消息,您的安全性将完全被破坏,(或者甚至只是猜测消息的一个片段)。 DCPcrypt 确实提供了另一种方法来初始化二进制 key (不是从字符串),同时允许用户设置 IV(您必须自己生成随机 IV)。下一个问题是整个 IV 管理变得有点复杂。

披露

我是 TurboPower LockBox 3 的作者。 Dave Barton 的 DCPcrypt 是一部令人钦佩且全面的工程作品,它是我编写 LockBox 3 的灵感之一。

关于delphi - 使用的 DCPcrypt 加密和哈希算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com