MySQL を暗号化および復号化するいくつかの方法 (要約)

MySQL を暗号化および復号化するいくつかの方法 (要約)

前面に書かれた

以前、MySQL 情報をどのように暗号化するかという問題に遭遇しました。実際、データを暗号化する方法は 2 つあります。1 つは、データベースの外部でデータを暗号化してからデータベースに保存する方法です。もう 1 つは、データベースの内部でデータを暗号化する方法です。 2 つの違いは、2 番目の方が 1 番目よりも使いやすいことです。外部で暗号化されている場合、暗号化された項目に基づいて検索するたびに、最初に暗号化されたデータを計算してから SQL に入力する必要があり、返されるデータも暗号化されたデータであるため、外部で復号化する必要があります。一方、2 番目は元の値と暗号化されたキーを SQL で直接渡すことができ、復号化も SQL で完了できます。これにより、クエリ フィールドが別のクエリの結果である場合など、外部の暗号化プロセスを経る必要があるため、最初の方法を使用して一部の結合された SQL クエリを完了できなくなります。

双方向暗号化

双方向暗号化には 3 つの方法があります。

エンコード/デコード

2つの値が渡され、1つは暗号化するレコード、もう1つは暗号化と復号化のキーです。暗号化後のバイナリ文字の長さは元の長さと同じで、blob型に格納されます。

BLOB 型フィールドはバイナリ データを格納するために使用されます。MySQL では、BLOB は TinyBlob、Blob、MediumBlob、LongBlob を含む型シリーズです。これらの型間の唯一の違いは、格納されるファイルの最大サイズです。 4 つの MySQL BLOB タイプ タイプ サイズ (単位: バイト) TinyBlob 最大 255 Blob 最大 65K 中。

暗号化:

ENCODE('mytext','mykeystring')を選択します。

結果:

mysql> SELECT ENCODE('mytext','mykeystring');
+--------------------------------+
| ENCODE('mytext','mykeystring') |
+--------------------------------+
| ">¿¡È | 
+--------------------------------+
セット内の 1 行 (0.00 秒)

復号化:

DECODE(ENCODE('mytext','mykeystring'),'mykeystring')を選択します。

結果:

mysql> SELECT DECODE(ENCODE('mytext','mykeystring'),'mykeystring');
+------------------------------------------------------+
| デコード(エンコード('mytext','mykeystring'),'mykeystring') |
+------------------------------------------------------+
| マイテキスト | 
+------------------------------------------------------+
セット内の 1 行 (0.00 秒)

AES_ENCRYPT/AES_DECRYPT

この暗号化アルゴリズムは、AES (Advanced Encryption Standard) と key_str 暗号化を使用します。key_str の長さは 256 ビットに達する可能性があります。暗号化された結果は、blob 型で保存されるバイナリ文字列です。

暗号化:

AES_ENCRYPT('mytext', 'mykeystring')を選択します。

結果:

mysql> AES_ENCRYPT('mytext', 'mykeystring') を選択します。
+--------------------------------------+
| AES_ENCRYPT('mytext', 'mykeystring') |
+--------------------------------------+
| •› ¨í ƒðb áÒ9•j | 
+--------------------------------------+
セット内の 1 行 (0.00 秒)

復号化:

AES_DECRYPT(AES_ENCRYPT('mytext','mykeystring'), 'mykeystring') を選択します。

DES_ENCRYPT/DES_DECRYPT

この暗号化方式では、3DES (Triple Encryption Data Algorithm、つまり暗号化レベルにギャップがある) が使用されます。暗号化時に、key_num または key_str の使用を選択できます。

例えば:

DES_ENCRYPT('mytext',5)、DES_ENCRYPT('mytext','mypassward') を選択します。

出力は次のようになります。

mysql> SELECT DES_ENCRYPT('mytext',5),DES_ENCRYPT('mytext','mypassward');
+-------------------------+------------------------------------+
| DES_ENCRYPT('mytext',5) | DES_ENCRYPT('mytext','mypassward') |
+-------------------------+------------------------------------+
| … ÿc}æ¤~ | ÿ ]ï×ñ”Å | 
+-------------------------+------------------------------------+
セット内の 1 行 (0.00 秒)

復号化時にDES_DECRYPTを使用する

ただし、w3resource には次のような文があります: この関数は、MySql 構成で SSL のサポートが利用できる場合、Secure Sockets Layer (SSL) でのみ動作します。私の個人的な理解では、この暗号化方法を使用する場合は、データベースに接続するために SSL セキュア接続を使用する必要があります。そうしないと、高い暗号化レベルが無駄になります。

一方向暗号化

実際、一方向暗号化は暗号化であるのか、たとえば MD5 暗号化は暗号化であるのかについては、オンラインで常に議論されてきました。ここでは暗号化アルゴリズムとして扱うので、議論する必要はありません

MD5暗号化

MD5 暗号化の結果は、32 ビットの 16 進バイナリ文字列になります。

MD5('w3resource')を選択します。

結果は次のとおりです。

mysql> MD5('w3resource')を選択します。 
+----------------------------------+
| MD5('w3resource') |
+----------------------------------+
| b273cb2263eb88f61f7133cd308b4064 | 
+----------------------------------+
セット内の1行(0.04秒)

暗号化

ENCRYPT は、バイナリ文字列を返す Unix crypt() システム コールを使用して実装されます。これは Unix システム コールに基づいているため、Windows では NULL を返します。

暗号化:

ENCRYPT('w3resource', 'encode')を選択します。

mysql> SELECT ENCRYPT('w3resource', 'encode');
+---------------------------------+
| ENCRYPT('w3resource', 'encode') |
+---------------------------------+
| NULL | 
+---------------------------------+
セット内の 1 行 (0.00 秒)

SHA1暗号化

SHA1 は 40 桁の 16 進数バイナリ文字列を返します。入力が NULL の場合、出力も NULL になります。

SHA1('w3resource')を選択します。
mysql> SHA1('w3resource')を選択します。
+------------------------------------------+
| SHA1('w3resource') |
+------------------------------------------+
|d228359c41174cede6b3c401eb8d11746a4ad1eb | 
+------------------------------------------+
セット内の 1 行 (0.00 秒)

パスワード

これは通常、パスワードを暗号化するために使用されます。

入力がNULLの場合、出力もNULLになります

mysql> パスワードを選択します('w3resource');
+------------------------------------------+
| パスワード('w3resource') |
+------------------------------------------+
| *EE0804DDC2CC3E85A47191ECCCBA29B775DFFA77 | 
+------------------------------------------+
セット内の 1 行 (0.00 秒)

参照
https://www.w3resource.com/mysql/encryption-and-compression-functions/decode().php
https://blog.csdn.net/Gpwner/article/details/51598344?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

これで、MySQL の暗号化と復号化のいくつかの方法についてのこの記事は終了です (概要)。MySQL の暗号化と復号化の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL 双方向暗号化と復号化の使用方法の詳細な説明

<<:  iframe 適応サイズ実装コード

>>:  CSS3はブラウザのスクロールバーのスタイルを変更します

推薦する

Centos8環境でSSHポート番号を変更する方法

目次序文始める序文サーバーのデフォルトの SSH ポート番号は通常 22 であるため、ほとんどのユー...

JSは賞金の重さに基づいて当選確率を計算します

目次1. シナリオ例1.1. 抽選の賞品名を設定する1.2. 各賞の重みを設定する1.3. ラッキー...

HTML <!--...--> コメントタグの役割の詳細な分析

多くのウェブサイトのソースコードを確認すると、多くのコメントが見つかります。特に、ソース文書にコメン...

時間範囲効果を実現するためのJavaScript

この記事では、時間範囲効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します...

mysql8.0.11データディレクトリ移行の実装

mysql のデフォルトのストレージ ディレクトリは/var/lib/mysql/です。以下は、デフ...

デザインにおいて無視できないインタラクティブデザインにおける製品状態の分析

製品デザインのプロセスにおいて、デザイナーは常に写真を非常に美しくすることを好みます。仮想ページのコ...

nginx をベースにした Web クラスター プロジェクトをすばやく構築する方法を説明します。

目次1. プロジェクト環境2. プロジェクトの説明3. プロジェクトの手順1. インストール2. 構...

Linux suse11でルートパスワードを忘れた場合に変更する方法の簡単な分析

SUSE Linuxでルートパスワードを忘れた場合の解決方法SUSE (Linux オペレーティング...

知らないかもしれないLinuxのファイル権限管理方法

なぜ権限管理が必要なのでしょうか? 1. コンピュータ リソースは限られているため、コンピュータ リ...

MySQL Limitクエリのパフォーマンスを向上させる方法

MySQL データベース操作では、一部のクエリを実行するときにデータベース エンジンが完全なテーブル...

Centos7.4 システムに yum ソースから mysql 5.6 をインストールする

システム環境: centos7.4 1. データベースがインストールされているかどうかを確認します。...

VirtualBox でのホストオンリー + NAT モードのネットワーク構成

VirtualBoxのHost Only+NATモードのネットワーク構成は参考用です。具体的な内容は...

MySQL 8.0.18 のさまざまなバージョンのインストールとインストール中に発生した問題 (要点の要約)

概要: MYSQLの問題解決記録:どのようなインストール方法 (rpm、gz、gz.xz) を使用す...

表内のコンテンツオーバーフローのレイアウト方法について

コンテンツオーバーフローとは何ですか?実際、テキストが大量にある場合、コンテンツ領域がそれだけの長さ...

MySQL 5.7 zip版(zip版)のインストールと設定手順の詳細

はじめに: Windows 10 を再インストールし、同時にファイルを整理しました。しかし、MySQ...