首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DCPcrypt加密和哈希算法

DCPcrypt加密和哈希算法
EN

Stack Overflow用户
提问于 2012-12-09 22:11:44
回答 2查看 3.7K关注 0票数 6

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

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

代码语言:javascript
复制
  Cipher := TDCP_rijndael.Create(nil);
  try
    Cipher.InitStr('5t@ck0v3rf10w', TDCP_md5);
    Result := Cipher.EncryptString('Test string');
  finally
    Cipher.Burn;
    Cipher.Free;
  end;

InitStr的评论是:

根据键字符串的散列执行密钥设置。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-10 06:56:14

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

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

然而..。

然而,更严重的问题是代码中缺少盐渍。除非您计划手动存储您的消息(不太可能),否则您的通信很容易受到重放攻击。如果你使用欧洲央行模式,这将是非常糟糕的,但不加腌制,这对任何模式都是一个重大的安全问题。“盐析”是指在加密之前,在IV或消息的开头注入足够大的、不可预测的、不可重复的值。

这突出了DCPCrypt的一个巨大问题。DCPcrypt的大多数用户对密码学的了解还不足以理解正确的盐碱化的重要性,因此将以正确的方式使用密码组件。当您以这种方式使用DCPcrypt (这是非常自然的)时,DCPcrypt做的是而不是盐分。事实上,它将IV设置为零。更糟的是..。如果您选择了密钥流类型的链接模式(这是非常流行的),并且您的IV通常为零,那么如果知道或猜测一条明文消息(或消息的一部分甚至是猜测的),您的安全性将完全被完全破坏。DCPcrypt确实提供了另一种方法来初始化二进制密钥(而不是从字符串),同时允许用户设置IV (您必须自己生成一个随机IV )。下一个问题是整个IV管理变得有点复杂。

披露

我是TurboPower LockBox 3的作者。戴夫巴顿的DCPcrypt,一个令人钦佩和全面的工程工作,是我写LockBox 3的灵感之一。

票数 9
EN

Stack Overflow用户

发布于 2012-12-10 02:26:57

您应该指定加密的攻击类型;假设使用了已知-明文攻击,而入侵者使用预先计算的哈希值查找密钥字符串--那么所使用的哈希算法之间应该没有区别,任何哈希算法都需要几乎相同的时间来查找密钥字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13792380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档