7

mySQL データベースがあり、phpMyAdmin を使用してアクセスしています。データベースには、名前、住所、電子メール、パスワードなどのフィールドを持つ従業員テーブルがあります。

最初のパスワード フィールドはVARCHAR (20). しかし今、SHA-256 ハッシュ技術を使用してパスワードをハッシュしたいと考えています。

私はデータベースの経験があまりないので、知りたいのは -

  1. 他のフィールドやテーブル全体に影響を与えることなく、現在の従業員のパスワードをすべてハッシュ化できますか?

  2. 将来、(Web アプリケーションから) データベースにデータを入力するとき、パスワードをハッシュするためのハッシュ関数をどこに記述すればよいですか? つまり、ハッシュがフロントエンドで発生し、ハッシュされたパスワードがDBに保存されるか、パスワードがDBに送られ、ハッシュされてから保存されますか。

解決策と提案をいただければ幸いです。

4

3 に答える 3

10

Q1:他のフィールドやテーブル全体に影響を与えることなく、現在のすべての従業員のパスワードをハッシュできますか?

A:はい。ただし、パスワードの列のサイズを40〜42変更する必要があります。組み込み関数を使用しPASSWORD( )てパスワードを暗号化します

ALTER TABLE tableName MODIFY `password` VARCHAR(42); 

その後、パスワード列を更新できます

UPDATE tablename
SET     `password` = PASSWORD(`password`);

元。)

abcde12345 => *20B30AFAF441808B50273EDA287132EC25B02DE2

Q2:将来、(Webアプリケーションから)データベースにデータを入力するときに、パスワードをハッシュするハッシュ関数をどこに記述すればよいですか?

A:あなたのINSERT query

INSERT INTO tableName (name, address, email, password) 
VALUES ('aa','bb',''cc,PASSWORD('abcde12345'))

パスワードを検索するときは、最初にテキストを暗号化します。

SELECT *
FROM   tableName
WHERE `password` = PASSWORD('abcde12345')

Passwordもう1つ、列をエスケープすることを忘れないでください。backtickこれはMySQLの予約語です。

于 2012-08-08T10:05:16.333 に答える
1

パスワードをphpでハッシュして、DBに保存できます。

$pwd = hash('sha256',$_POST['password']);

MySQL は sha256 関数をサポートしていないため、コードでハッシュしてから、パスワード テーブルを保存/更新する必要があります。それ以外の場合は、これを考慮することができますhttp://stuge.se/mysql-sha256/

于 2012-08-08T09:21:00.950 に答える