パスワードを MySQL データベースに保存する

Haider Ali 2024年2月15日
  1. ハッシングとは
  2. MD5 (str) を使用して MySQL にパスワードを保存する
  3. SHA1 (str) を使用して MySQL にパスワードを保存する
  4. PASSWORD 関数を使用して MySQL にパスワードを保存する
  5. ENCRYPT 関数を使用して MySQL にパスワードを保存する
パスワードを MySQL データベースに保存する

MySQL データベースにパスワードを保存する方法がわからない場合は、ここが適切な場所です。 このガイドでは、ハッシュ パスワードを MySQL データベースに保存する方法、ハッシュ パスワードを保存するために使用されるさまざまな手法と特定の方法について学習できます。

ハッシングとは

ハッシュは、指定された数のキーまたは文字列をより短い固定長の値に変換します。 ハッシングでは、固定サイズのデータとは、ハッシュ文字に変換された任意の数のキーまたは文字列が同じサイズであることを意味します。

ハッシュのもう 1つの特性は、値がハッシュに変換された場合、元のデータ値を取得する方法がないことを意味する取得不可能なプロセスであることです。

MySQL ではさまざまなハッシュ関数が使用されます。 これらは次のとおりです。

  1. MD5 (文字列)
  2. SHA1 (文字列)
  3. パスワード
  4. 暗号化

MD5 (str) を使用して MySQL にパスワードを保存する

md5 は、データの 128 ビット チェックサムを受け取り、それを 32 桁の 16 進数の文字列として返す関数です。

まず、データベースにテーブル clients を作成し、そのテーブルの 2つのフィールドをデータ型 varchar で作成します。

クライアント テーブル

いくつかの値を挿入し、md5 を使用してハッシュ パスワードを作成します。

md5 を使用してクライアント 1 に挿入

md5 を使用してクライアント 2 に挿入

ご覧のとおり、md5 関数は両方の入力値を 32 桁の 16 進数に変換しました。

先ほど、それが取得不可能な関数であると言ったときの意味を示しましょう。

md5 を使用してデータ 1 を取得

md5 を使用してデータ 2 を取得

ご覧のとおり、データを取得するには、両方の値に md5 関数を使用する必要がありました。 そうしないと、エラーが発生しました。

SHA1 (str) を使用して MySQL にパスワードを保存する

sha1 は、以前の md5 関数よりもはるかに広い範囲を持つハッシュ関数です。 160 ビットのデータ チェックサムを 40 桁の 16 進数の文字列に変換します。

理解を深めるための例を次に示します。

sha1 を使用してクライアントに挿入

これら 2つのハッシュ関数が機能すること、およびこれらが互いにどのように異なるかについては、すでに十分に理解できているはずです。 sha1 のもう 1つの点は、はるかに優れたバージョンが利用可能であり、はるかに広い範囲を提供することです。

これらは次のとおりです。

  1. SHA224 - データの 224 ビット チェックサムを変換し、56 桁の 16 進数の文字列を返します。
  2. SHA256 - データの 256 ビット チェックサムを変換し、64 桁の 16 進数の文字列を返します。
  3. SHA384 - データの 384 ビット チェックサムを変換し、96 桁の 16 進数の文字列を返します。
  4. SHA512 - データの 512 ビット チェックサムを変換し、128 桁の 16 進数の文字列を返します。

PASSWORD 関数を使用して MySQL にパスワードを保存する

password 関数は、平文のパスワード文字列を使用してハッシュ化されたパスワードを生成します。 password 関数は、引数が NULL の場合、NULL を返します。

理解を深めるために、いくつかの例を挙げてみましょう。

SELECT
PASSWORD('xyz');

出力:

6gd7gb67shy87865

それでは、数字と文字を含む文字列を試してみましょう。

SELECT
PASSWORD('xyz123');

出力:

54fg56gs32sgi3862

password 関数に関するもう 1つの重要な点は、すべての MySQL バージョンをサポートしているわけではないということです。 サポートされているバージョンは次のとおりです。

  1. MySQL 5.6
  2. MySQL 5.5
  3. MySQL 5.1
  4. MySQL 5.0
  5. MySQL 4.1

ENCRYPT 関数を使用して MySQL にパスワードを保存する

これは、文字列を読みにくいバイナリ データに変換することです。 暗号化されたデータは、後で簡単に復号化できます。

重要な注意点は、列のデータ型が BLOB であることです。

暗号化 では、2 種類の関数が使用されます。

  1. AES (Advanced Encryption Standards) - 128 ビット キーによるエンコードを保証する公式の AES アルゴリズムを使用します。 aes を使用した暗号化では、AES_ENCRYPT(str,key_str) を記述する必要があります。
  2. DES (Data Encryption Standards) はトリプル DES アルゴリズムを使用します。 この暗号化の条件は、MySQL が SSL サポートで構成されている必要があることです。

ここで考慮すべきポイントは、Encrypt 機能は Unix オペレーティング システムでのみ使用できるということです。 したがって、他のオペレーティング システムでは、AES または DES 暗号化を使用する必要があります。

このテクニックに慣れるために、encryption 関数に飛び込みましょう。

暗号化を使用してクライアントに挿入

値に AES_Encryption を適用すると、表でその効果を確認できます。 別の例があります:

encrypt 2 を使用してクライアントに挿入

値を取得するには、正しいキーを提供する必要があります。 そうしないと、目的のデータを取得できません。

aes-decrypt

ここでは、間違ったキーを挿入しました。結果は以下のとおりです。

間違ったキー

ここでは、正しいキーを使用して他の値を取得します。

右キー

著者: Haider Ali
Haider Ali avatar Haider Ali avatar

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