Qt计算和比较密码哈希

时间:2016-10-19 16:08:15

标签: c++ qt hash cryptography

目前正在Qt中为测验计划构建面向身份验证服务。

据我了解,当将用户密码存储在数据库中时,必须将其隐藏,以防万一它落入坏人之手。

流行的方法似乎是将Salt添加到密码然后存储组合的计算散列的过程。

稍后可以比较此哈希:

HASH(userinput + SALT)= StoredHash

Qt提供QCryptographicHash :: hash(数据,算法方法)但由于密钥可能是随机的,所以我看不出它是如何有用的。

或者Qt提供QMessageAuthenticationCode :: hash(消息,密钥,算法方法)我认为消息是userpassword并且密钥是pseudo_random(row_id)是正确的。

我正在考虑使用Sha2-256 Algorithim我需要Cryptographically secure pseudorandom number generator吗?

2 个答案:

答案 0 :(得分:0)

Qt Library组件确实不适合加密。

MongoDB很好地插入,虽然相对较新的libSodiums implementation of Argon和其他人说的很好。

.pro

QMAKE_CXXFLAGS += -lsodium
QMAKE_LFLAGS += -lsodium

仍然必须有owaspenforce个强密码。

答案 1 :(得分:0)

目前常用的散列密码算法是bcrypt。

有一个简单的C ++实现here

哈希密码有两个重要的事项:

  1. Salt,正如你所说,是为了防止彩虹桌攻击。每个用户的盐应该不同。
  2. 迭代散列,您将密码密码数千次,以使暴力攻击速度明显变慢。
  3. bcrypt实现这两个。