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はブラウザのスクロールバーのスタイルを変更します

推薦する

Windows2008 64 ビット システムでの MySQL 5.7 グリーン バージョンのインストール チュートリアル

序文この記事では、MySQL 5.7 グリーン バージョンのインストール チュートリアルを紹介します...

Dockerイメージを素早くデプロイして実行する最新のIDEAプロセスの詳細な説明

背景docker とアイデアを使用して、Java Web の開発、展開、運用までのプロセス全体を実現...

ダイナミッククロックを実現するJS+CSS

この記事の例では、動的な時計を実装するためのJS + CSSの具体的なコードを参考までに共有していま...

TypeScriptの列挙型を詳しく説明する

目次1. デジタル列挙2. 文字列の列挙3. 逆マッピング4. 異種列挙5. 定数列挙6. 列挙メン...

HTTPSの最も優れた説明

皆さんおはようございます。しばらく記事を更新していませんでした。実は、私は流行中に1か月以上家にいて...

MySqlサブクエリINの実装と最適化

目次IN が遅いのはなぜですか? INとEXISTSのどちらが速いでしょうか?効率を向上させるにはど...

CentOS8 yum/dnfで国内ソースを設定する方法

CentOS 8 ではソフトウェア パッケージのインストール プログラムが変更され、yum 構成方法...

MySQL binlog_ignore_dbパラメータの具体的な使用法

序文:前の記事を読んだ後、binlog はデータベースで実行されたすべての DDL および DML ...

MySQL で制限を使用するとパフォーマンスに影響するのはなぜですか?

まず、MySQL のバージョンについて説明します。 mysql> バージョンを選択します();...

nodejs で worker_threads を使用して新しいスレッドを作成する方法

導入前の記事で述べたように、NodeJS には 2 種類のスレッドがあります。1 つは、ユーザー リ...

Node.js は、異なるリクエストパスに応じて異なるデータを返します。

目次1. 異なるリクエストパスに応じて異なるデータを返す方法を学びます。 2. 送信データ: データ...

MySQL 8.0.19 winx64 インストールチュートリアルと Windows 10 での初期パスワードの変更

この記事では、参考までにMySQL 8.0.19 winx64のインストールチュートリアルを紹介しま...

MySQLで指定した時間前にレコードを自動的に削除する方法

イベントについて: MySQL 5.1 では、イベントの概念が導入され始めました。イベントは「時間ト...

CSSは、閉じることができるマスクレイヤーを備えたポップアップウィンドウ効果を実装します。

実際の開発ではポップアップウィンドウがよく使われます。CSS3を勉強していたときに、閉じることができ...

Tomcat の設定と Eclipse での起動方法

目次Tomcat8のインストールと設定方法tomcat ダウンロードTomcat マネージャーを有効...