パスワードを MySQL データベースに保存する
- ハッシングとは
-
MD5 (str)
を使用して MySQL にパスワードを保存する -
SHA1 (str)
を使用して MySQL にパスワードを保存する -
PASSWORD
関数を使用して MySQL にパスワードを保存する -
ENCRYPT
関数を使用して MySQL にパスワードを保存する
MySQL データベースにパスワードを保存する方法がわからない場合は、ここが適切な場所です。 このガイドでは、ハッシュ パスワードを MySQL データベースに保存する方法、ハッシュ パスワードを保存するために使用されるさまざまな手法と特定の方法について学習できます。
ハッシングとは
ハッシュは、指定された数のキーまたは文字列をより短い固定長の値に変換します。 ハッシングでは、固定サイズのデータとは、ハッシュ文字に変換された任意の数のキーまたは文字列が同じサイズであることを意味します。
ハッシュのもう 1つの特性は、値がハッシュに変換された場合、元のデータ値を取得する方法がないことを意味する取得不可能なプロセスであることです。
MySQL ではさまざまなハッシュ関数が使用されます。 これらは次のとおりです。
MD5 (文字列)
SHA1 (文字列)
パスワード
暗号化
MD5 (str)
を使用して MySQL にパスワードを保存する
md5
は、データの 128 ビット チェックサムを受け取り、それを 32 桁の 16 進数の文字列として返す関数です。
まず、データベースにテーブル clients
を作成し、そのテーブルの 2つのフィールドをデータ型 varchar
で作成します。
いくつかの値を挿入し、md5
を使用してハッシュ パスワードを作成します。
ご覧のとおり、md5
関数は両方の入力値を 32 桁の 16 進数に変換しました。
先ほど、それが取得不可能な関数であると言ったときの意味を示しましょう。
ご覧のとおり、データを取得するには、両方の値に md5
関数を使用する必要がありました。 そうしないと、エラーが発生しました。
SHA1 (str)
を使用して MySQL にパスワードを保存する
sha1
は、以前の md5
関数よりもはるかに広い範囲を持つハッシュ関数です。 160 ビットのデータ チェックサムを 40 桁の 16 進数の文字列に変換します。
理解を深めるための例を次に示します。
これら 2つのハッシュ関数が機能すること、およびこれらが互いにどのように異なるかについては、すでに十分に理解できているはずです。 sha1
のもう 1つの点は、はるかに優れたバージョンが利用可能であり、はるかに広い範囲を提供することです。
これらは次のとおりです。
SHA224
- データの 224 ビット チェックサムを変換し、56 桁の 16 進数の文字列を返します。SHA256
- データの 256 ビット チェックサムを変換し、64 桁の 16 進数の文字列を返します。SHA384
- データの 384 ビット チェックサムを変換し、96 桁の 16 進数の文字列を返します。SHA512
- データの 512 ビット チェックサムを変換し、128 桁の 16 進数の文字列を返します。
PASSWORD
関数を使用して MySQL にパスワードを保存する
password
関数は、平文のパスワード文字列を使用してハッシュ化されたパスワードを生成します。 password
関数は、引数が NULL の場合、NULL
を返します。
理解を深めるために、いくつかの例を挙げてみましょう。
SELECT
PASSWORD('xyz');
出力:
6gd7gb67shy87865
それでは、数字と文字を含む文字列を試してみましょう。
SELECT
PASSWORD('xyz123');
出力:
54fg56gs32sgi3862
password
関数に関するもう 1つの重要な点は、すべての MySQL バージョンをサポートしているわけではないということです。 サポートされているバージョンは次のとおりです。
- MySQL 5.6
- MySQL 5.5
- MySQL 5.1
- MySQL 5.0
- MySQL 4.1
ENCRYPT
関数を使用して MySQL にパスワードを保存する
これは、文字列を読みにくいバイナリ データに変換することです。 暗号化されたデータは、後で簡単に復号化できます。
重要な注意点は、列のデータ型が BLOB
であることです。
暗号化
では、2 種類の関数が使用されます。
AES
(Advanced Encryption Standards
) - 128 ビット キーによるエンコードを保証する公式の AES アルゴリズムを使用します。aes
を使用した暗号化では、AES_ENCRYPT(str,key_str)
を記述する必要があります。DES
(Data Encryption Standards
) はトリプル DES アルゴリズムを使用します。 この暗号化の条件は、MySQL が SSL サポートで構成されている必要があることです。
ここで考慮すべきポイントは、Encrypt
機能は Unix オペレーティング システムでのみ使用できるということです。 したがって、他のオペレーティング システムでは、AES または DES 暗号化を使用する必要があります。
このテクニックに慣れるために、encryption
関数に飛び込みましょう。
値に AES_Encryption
を適用すると、表でその効果を確認できます。 別の例があります:
値を取得するには、正しいキーを提供する必要があります。 そうしないと、目的のデータを取得できません。
ここでは、間違ったキーを挿入しました。結果は以下のとおりです。
ここでは、正しいキーを使用して他の値を取得します。
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn