【问题标题】:Using Openssl blowfish encryption algorithm in C++在 C++ 中使用 Openssl 河豚加密算法
【发布时间】:2011-08-08 18:41:48
【问题描述】:

我正在编写代码来加密密码并匹配加密密码以检查密码是否弱。我已经使用 ECB 模式 API 编写了加密代码,但它没有按预期工作。在调试我的代码时,我遇到的问题很少。我看到的唯一可以使用的选项是 BF_ecb_encrypt。

1) ecb 模式一次可处理 8 个字节。如果我的密码少于 8 个字符怎么办?是否应该填充随机生成的字符?或与零的?它会这样工作吗?或任何其他可能的方式

2) 片段:

BF_set_key(bfKey, strlen(achSalt), achSalt);
String strBuf;
while (len >= 8)
{
  BF_ecb_encrypt(inStr,buf, bfKey, BF_ENCRYPT);
  len -= 8;
  inStr += 8;
  strBuf += String(reinterpret_cast<const char*>(buf));
  buf +=8;
}

代码有bug吗?

提前感谢您的帮助。

【问题讨论】:

  • 您可能想要散列密码而不是加密它 - 这是存储密码的标准方式,所以除非您有充分的理由进行加密,否则不要这样做
  • 能否举个同样的例子
  • Open ssl 包含哈希算法:openssl.org/docs/crypto/sha.html
  • 好的。让我详细解释一下我的用例:
  • 我有一个用户名和密码数据库(使用河豚算法散列)。在这里,我想验证是否有任何密码很弱。因为唯一的方法是拥有弱密码字典,使用河豚算法对其进行哈希处理,并将它们与数据库中的密码进行匹配。

标签: c++ blowfish


【解决方案1】:

你说的地方:

1) ecb 模式一次可处理 8 个字节。如果我的密码少了怎么办 超过 8 个字符?

出于“安全”原因,为什么不将最小长度设置为 8 个字符。人们的密码通常超过 8 个字符,因为如果密码越长越复杂,加密时就越难破解。

【讨论】:

  • 你是对的 Flyphe。但是我正在使用现有的数据库,其中密码可能与用户名相同(长度小于 8 个字节),这就是我的用例有效地查找密码是否弱的地方。
  • @Rhexis如何生成bfKey?
猜你喜欢
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
相关资源
最近更新 更多