[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操作:
  • ;ブロック暗号化モードは、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-1SHA1(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-2SHA2(str, hash_length)入力された文字列strをhash_length bitのDigest(Hash)のハッシュアルゴリズムに変換する.
    SHA-1の改良版.
    hash lengthは、224256(=0)、384512を含むことができる.
    略称はSHA-2 512bit → SHA-512SHA-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ビット)である.