前面に書かれた以前、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 秒) 参照 これで、MySQL の暗号化と復号化のいくつかの方法についてのこの記事は終了です (概要)。MySQL の暗号化と復号化の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: CSS3はブラウザのスクロールバーのスタイルを変更します
目次序文始める序文サーバーのデフォルトの SSH ポート番号は通常 22 であるため、ほとんどのユー...
目次1. シナリオ例1.1. 抽選の賞品名を設定する1.2. 各賞の重みを設定する1.3. ラッキー...
多くのウェブサイトのソースコードを確認すると、多くのコメントが見つかります。特に、ソース文書にコメン...
この記事では、時間範囲効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します...
mysql のデフォルトのストレージ ディレクトリは/var/lib/mysql/です。以下は、デフ...
製品デザインのプロセスにおいて、デザイナーは常に写真を非常に美しくすることを好みます。仮想ページのコ...
目次1. プロジェクト環境2. プロジェクトの説明3. プロジェクトの手順1. インストール2. 構...
SUSE Linuxでルートパスワードを忘れた場合の解決方法SUSE (Linux オペレーティング...
なぜ権限管理が必要なのでしょうか? 1. コンピュータ リソースは限られているため、コンピュータ リ...
MySQL データベース操作では、一部のクエリを実行するときにデータベース エンジンが完全なテーブル...
システム環境: centos7.4 1. データベースがインストールされているかどうかを確認します。...
VirtualBoxのHost Only+NATモードのネットワーク構成は参考用です。具体的な内容は...
概要: MYSQLの問題解決記録:どのようなインストール方法 (rpm、gz、gz.xz) を使用す...
コンテンツオーバーフローとは何ですか?実際、テキストが大量にある場合、コンテンツ領域がそれだけの長さ...
はじめに: Windows 10 を再インストールし、同時にファイルを整理しました。しかし、MySQ...