Table 12.18 Encryption Functions

    Name Description Deprecated
    AES_DECRYPT() Decrypt using AES
    AES_ENCRYPT() Encrypt using AES
    COMPRESS() Return result as a binary string
    DECODE() Decode a string encrypted using ENCODE() Yes
    DES_DECRYPT() Decrypt a string Yes
    DES_ENCRYPT() Encrypt a string Yes
    ENCODE() Encode a string Yes
    ENCRYPT() Encrypt a string Yes
    MD5() Calculate MD5 checksum
    PASSWORD() Calculate and return a password string Yes
    RANDOM_BYTES() Return a random byte vector
    SHA1(),SHA() Calculate an SHA-1 160-bit checksum
    SHA2() Calculate an SHA-2 checksum
    UNCOMPRESS() Uncompress a string compressed
    UNCOMPRESSED_LENGTH() Return the length of a string before compression
    VALIDATE_PASSWORD_STRENGTH() Determine strength of password

    许多加密和压缩函数返回结果可能包含任意字节值的字符串。如果要存储这些结果,请使用具有 VARBINARY 或 BLOB 二进制字符串数据类型的列。这避免了删除尾随空格或字符集转换可能会改变数据值的潜在问题,例如,如果使用非二进制字符串数据类型(CHAR、 VARCHAR、 TEXT) ,可能会发生这种情况。

    一些加密函数返回 ASCII 字符串: MD5()、 PASSWORD ()、 SHA ()、 SHA1()、 SHA2()。它们的返回值是一个字符串,该字符串具有由 character_set_connectioncollation_connection 系统变量确定的字符集和排序规则。这是一个非二进制字符串,除非字符集是二进制的。

    使用案例

    1. INSERT INTO t
    2. VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    3. INSERT INTO t
    4. VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    5. mysql> SELECT LENGTH(COMPRESS(REPEAT('a',1000)));
    6. -> 21
    7. mysql> SELECT LENGTH(COMPRESS(''));
    8. -> 0
    9. mysql> SELECT LENGTH(COMPRESS('a'));
    10. -> 13
    11. mysql> SELECT LENGTH(COMPRESS(REPEAT('a',16)));
    12. -> 15
    13. ENCODE('cleartext', CONCAT('my_random_salt','my_secret_password'))
    14. mysql> SELECT ENCRYPT('hello');
    15. -> 'VxuFAJXVARROc'
    16. mysql> SELECT MD5('testing');
    17. -> 'ae2b1fca515949e5d54fb22b8ed95575'
    18. mysql> SELECT SHA1('abc');
    19. -> 'a9993e364706816aba3e25717850c26c9cd0d89d'
    20. mysql> SELECT UNCOMPRESS(COMPRESS('any string'));
    21. -> 'any string'
    22. mysql> SELECT UNCOMPRESS('any string');
    23. -> NULL