[MySQL]暗号化関数
MySQL(Community Version)は、基本的な暗号化アルゴリズムを提供しています. たいしょうキー暗号化アルゴリズム AES AES/CBC + iv(SHA-512) AES/ECB たんほうこう暗号化アルゴリズム MD5 SHA1 SHA2 たいしょうキー暗号化アルゴリズム
対称鍵暗号化アルゴリズムの暗号化に使用される鍵は、復号化に使用される鍵と同じである.
keyが公開されている場合、原文を復号することができるので、keyのセキュリティが必要です.
従って、対称鍵暗号化アルゴリズムは秘密鍵暗号化アルゴリズムとも呼ばれる.
MySQL Community 8.0.0では、対称鍵暗号化アルゴリズムを使用してAESとDESを提供します.
使用方法は同じですが、DESアルゴリズムはバージョン8.0.3以前から削除されていますので、代わりにAESアルゴリズムを使用することをお勧めします.
AES
AESアルゴリズムはブロック暗号アルゴリズムである.
ブロックパスワードとは、特定の文を暗号化する際に、固定されたブロック単位で暗号化することです.
特定の文に複数のブロックがある場合、ブロック内の文が同じである場合、iv(初期化ベクトル、初期化ベクトル)を使用して、同じ暗号化結果を使用して原文のセキュリティ問題を推定することを防止できます. iv:CBC、CFB 1、CFB 8、CFB 128、OFB を用いる.
非 iv操作: ;ブロック暗号化モードは、
変数の作成方法はaes-keylen-modeであり,keylenはその名の通りキーの長さであり,modは運用方式である.
keylenは、128、192、および256を含むことができる.
CBCの動作方式とivを使用して暗号化と復号化を行う.
対称鍵として使用される@Keyは、SHA-21512 bitを使用して文字列を暗号化している.
ivは少なくとも16バイトでなければならないことに注意してください.
AES/ECB
における操作方式を用いて暗号化と復号化を行う.
操作方法はivを使用しません.
ハッシュ関数を使用してハッシュ(=Digest)を生成するアルゴリズム.
ハッシュ関数または要約関数とも呼ばれます.
ハッシュ関数を使用すると暗号化できますが、復号化できません.
MD5
128ビットハッシュに変換された一方向暗号化アルゴリズム.
セキュリティが悪いため、個人情報の暗号化は推奨されません.
主に、プログラムまたはファイルが元のファイルと同じかどうかを確認するために使用されます.
1 byte=8 bit=16進2文字
したがって、長さ32の文字列は16バイト(=128ビット)である.
SHA-1
したがって、長さ40の文字列は20バイト(=160ビット)である.
SHA-2
SHA-1の改良版.
hash lengthは、224256(=0)、384512を含むことができる.
略称は
したがって、長さ64の文字列は32バイト(=256ビット)である.
対称鍵暗号化アルゴリズムの暗号化に使用される鍵は、復号化に使用される鍵と同じである.
keyが公開されている場合、原文を復号することができるので、keyのセキュリティが必要です.
従って、対称鍵暗号化アルゴリズムは秘密鍵暗号化アルゴリズムとも呼ばれる.
MySQL Community 8.0.0では、対称鍵暗号化アルゴリズムを使用してAESとDESを提供します.
使用方法は同じですが、DESアルゴリズムはバージョン8.0.3以前から削除されていますので、代わりにAESアルゴリズムを使用することをお勧めします.
AES
AESアルゴリズムはブロック暗号アルゴリズムである.
ブロックパスワードとは、特定の文を暗号化する際に、固定されたブロック単位で暗号化することです.
特定の文に複数のブロックがある場合、ブロック内の文が同じである場合、iv(初期化ベクトル、初期化ベクトル)を使用して、同じ暗号化結果を使用して原文のセキュリティ問題を推定することを防止できます.
非
block_encryption_mode
システム変数に設定することができる.変数の作成方法はaes-keylen-modeであり,keylenはその名の通りキーの長さであり,modは運用方式である.
keylenは、128、192、および256を含むことができる.
SELECT @@block_encryption_mode;
# aes-128-ecb
AES/CBC + iv(SHA-512)CBCの動作方式とivを使用して暗号化と復号化を行う.
対称鍵として使用される@Keyは、SHA-21512 bitを使用して文字列を暗号化している.
ivは少なくとも16バイトでなければならないことに注意してください.
SET block_encryption_mode = 'aes-256-cbc';
SET @key = SHA2('test secret', 512);
SET @iv = RANDOM_BYTES(16);
SET @crypt_str = AES_ENCRYPT('[email protected]', @key, @iv);
SELECT AES_DECRYPT(@crypt_str, @key, @iv);
# [email protected]
RANDOM BYTES関数を用いて任意の16バイトサイズのivを生成した.AES/ECB
における操作方式を用いて暗号化と復号化を行う.
操作方法はivを使用しません.
SET block_encryption_mode = 'aes-128-ecb';
SET @key = SHA2('test secret', 512);
SET @crypt_str = AES_ENCRYPT('[email protected]', @key);
SELECT AES_DECRYPT(@crypt_str, @key);
# [email protected]
たんほうこう暗号化アルゴリズムハッシュ関数を使用してハッシュ(=Digest)を生成するアルゴリズム.
ハッシュ関数または要約関数とも呼ばれます.
ハッシュ関数を使用すると暗号化できますが、復号化できません.
MD5
128ビットハッシュに変換された一方向暗号化アルゴリズム.
セキュリティが悪いため、個人情報の暗号化は推奨されません.
主に、プログラムまたはファイルが元のファイルと同じかどうかを確認するために使用されます.
SELECT MD5('test'), LENGTH(MD5('test'));
# MD5('test') LENGTH(MD5('test'))
# 098f6bcd4621d373cade4e832627b4f6 32
MD 5は、16進数からなる長さ32の文字列を返します.1 byte=8 bit=16進2文字
したがって、長さ32の文字列は16バイト(=128ビット)である.
SHA-1
SHA1(str)
入力した文字列strを160ビットDigestのハッシュアルゴリズムに変換します.SELECT SHA1('test'), LENGTH(SHA1('test'));
# SHA1('test') LENGTH(SHA1('test'))
# a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 40
MD 5は、16進数からなる長さ40の文字列を返す.したがって、長さ40の文字列は20バイト(=160ビット)である.
SHA-2
SHA2(str, hash_length)
入力された文字列strをhash_length
bitのDigest(Hash)のハッシュアルゴリズムに変換する.SHA-1の改良版.
hash lengthは、224256(=0)、384512を含むことができる.
略称は
SHA-2 512bit → SHA-512
、SHA-2 256bit → SHA-256
.SELECT SHA2('test',256), LENGTH(SHA2('test',256));
# SHA2('test',256) LENGTH(SHA2('test',256))
# 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 64
SHA−256は、16進数からなる長さ64の文字列を返す.したがって、長さ64の文字列は32バイト(=256ビット)である.
Reference
この問題について([MySQL]暗号化関数), 我々は、より多くの情報をここで見つけました https://velog.io/@mineru/MySQL-암호화-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol