ユーザーテーブルで管理者パスワードをハッシュするにはどうすればよいですか?
SQL Server2008R2の使用
PHPに暗号化コマンドが組み込まれていることは知っていますが、SQLクエリを使用してこれが可能かどうかはわかりません。
例:usersというテーブル、adminのエントリ、パスワードはsha1('password')
ユーザーテーブルで管理者パスワードをハッシュするにはどうすればよいですか?
SQL Server2008R2の使用
PHPに暗号化コマンドが組み込まれていることは知っていますが、SQLクエリを使用してこれが可能かどうかはわかりません。
例:usersというテーブル、adminのエントリ、パスワードはsha1('password')
上記のいずれも、パスワード ハッシュを保存する良い方法ではないことに注意してください。PBKDF2 (PKCS #5、RFC2898) を使用して、ソルト化されたパスワードを何度もハッシュします(OWASP は 2012 年に 64,000 回、2 年ごとに 2 倍にすることを推奨しています)。理想的には、ランダムなユーザーごとのソルトで保存された、可変回数のハッシュです。
さらに良いことに、提案されたパスワードを、既知の悪意のあるパスワードのリストに対してバウンスします。理想的には、基本的なクラッキング ルールが既に適用されているため (1337 話す翻訳)、「P@$$w0rd」は許可されません。
OWASP パスワード ストレージ チート シートを参照してください: https://www.owasp.org/index.php?title=Password_Storage_Cheat_Sheet&setlang=es
アルゴリズムとして使用HASHBYTES
および指定します。SHA1
例:
SELECT HASHBYTES('SHA1', @password);
編集: Sivaがコメントで言ったように、実際にはパスワードを別の方法で保存し、少なくともそれらをソルトする必要があります.
ここを参照してください:データベースにパスワードを保存する推奨方法
暗号化とハッシュには違いがあります。暗号化は、通常は暗号を使用してプレーン テキストを変換し、ハッシュを元の入力に戻すことができない場合、元の入力に戻すことができます。
クエリには、次のHASHBYTES
関数を使用する必要があります。
DECLARE @YourInput nvarchar(4000);
SELECT @YourInput = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT HASHBYTES('SHA1', @YourInput);
SQL Server 2012 を使用している場合は、次を使用できます。
SELECT HASHBYTES('SHA_256', @YourInput); // SHA 256 or SHA_512