mysql双方向暗号解読方式の使い方の詳細

1990 ワード

mysqlデータベースを使用している場合は、パスワードやその他の機密重要な情報をアプリケーションに保存する機会があります.これらのデータをハッカーや覗き見から保護することは、許可されていない人にアプリケーションを使用したり破壊したりすることはできません.また、競争優位性を保証するため、注目すべき重要な問題です.幸いなことに、MySQLには、このタイプのセキュリティを提供するための暗号化関数がたくさんあります.この文書では、いくつかの関数について概説し、それらの使用方法、およびそれらが提供できる異なるレベルのセキュリティについて説明します.
双方向暗号化
最も簡単な暗号化から始めましょう.双方向暗号化です.ここで、1つのデータは1つの鍵によって暗号化され、この鍵を知っている人だけが復号することができる.MySQLには、ENCODE()とDECODE()の2つの関数があります.簡単な例を次に示します.
 
  
mysql> INSERT INTO users (username, password)
VALUES ('joe', ENCODE('guessme', 'abracadabra'));
Query OK, 1 row affected (0.14 sec)

ここで、Joeのパスワードはguessmeであり、鍵abracadabraによって暗号化されている.暗号化された結果は、次のようにバイナリ文字列であることに注意してください.
 
  
mysql> SELECT * FROM users WHERE username='joe';
+----------+----------+
| username | password |
+----------+----------+
| joe | ??i??!? |
+----------+----------+
1 row in set (0.02 sec)
abracadabra 。 DECODE() , 、 。 :
mysql> SELECT DECODE(password, 'abracadabra')
FROM users WHERE username='joe';
+---------------------------------+
| DECODE(password, 'abracadabra') |
+---------------------------------+
| guessme |
+---------------------------------+
1 row in set (0.00 sec)

Webアプリケーションでどのように実行されているのかは簡単にわかるはずです.ユーザーのログインを検証するとき、DECODE()はサイト専用の鍵でデータベースに保存されているパスワードを解き、ユーザーが入力した内容と比較します.PHPを独自のスクリプト言語として使用すると、次のようにクエリーできます.
 
  
$query = "SELECT COUNT(*) FROM users WHERE
username='$inputUser' AND DECODE(password,
'abracadabra') = '$inputPass'";
?>

注:ENCODE()とDECODE()の2つの関数は、多くの要件を満たすことができますが、より強度の高い暗号化手段を使用する場合があります.この場合、AES_を使用できます.ENCRYPT()とAES_DECRYPT()関数は、動作は同じですが、暗号化の強度が高いです.