2016-10-19 4 views
0

現在、Qtでクイズプログラム用のWeb認証認証サービスを構築しています。Qtコンピューティングとパスワードハッシュの比較

ユーザのパスワードをデータベースに保存するときは、間違っている場合に備えて、パスワードを隠しておく必要があります。

一般的な方法は、パスワードにSaltを追加し、その組み合わせの計算されたハッシュを保存するプロセスと思われます。

このハッシュは、後で比較することができます。

HASHを(ユーザ入力+ SALT)= StoredHash

QtはQCryptographicHash ::ハッシュ(データ、アルゴリズム方法)を提供しますが、キーはおそらくランダムであると私は見ていませんこれがどのように役立つか。

また、QMessageAuthenticationCode :: hash(メッセージ、キー、アルゴリズムメソッド)は、メッセージがuserpasswordでkeyがpseudo_random(row_id)であると考えています。

私はSha2-256を使用すると考えています。AlgorithimにはCryptographically secure pseudorandom number generatorが必要ですか?

+0

* "キーはおそらくランダムです" * - 'QCryptographicHash :: hash'はキーを使用しません。 –

+0

奇妙なことに、QCryptographicHashによって提供されたアルゴリズムのいずれも、暗号化の使用に推奨されていません。 – dtech

+0

@ddriver:[QCryptographicHash](https://doc.qt.io/qt-5/qcryptographichash.html#Algorithm-enum)はSHA-512をサポートしていますが、これは十分に十分な暗号の使用法です。 – TonyK

答えて

0

Qtライブラリコンポーネントは実際に暗号化には適していません。

libSodiums implementation of Argonプラグインはきれいで、比較的新しいですがowaspなどが良いことを言っています。

.PRO

QMAKE_CXXFLAGS += -lsodium 
QMAKE_LFLAGS += -lsodium 

一つ必要があり、まだenforceまたはgenerate強力なパスワード。

+0

ハッシュは暗号ではありません – Damien

0

パスワードのハッシングによく使用されるアルゴリズムは、現在bcryptです。あなたは虹のテーブルの攻撃から保護するために、述べたように

  1. 塩、単純なC++の実装here

    があり

    パスワードをハッシュするための2つの重要な事があります。塩は各ユーザーごとに異なるはずです。

  2. パスワードを数千回ハッシュして総当たり攻撃を大幅に遅くする反復ハッシング。

bcryptは、これらの両方を実装しています。

関連する問題