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_connection 和 collation_connection 系统变量确定的字符集和排序规则。这是一个非二进制字符串,除非字符集是二进制的。
使用案例
INSERT INTO tVALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));INSERT INTO tVALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));mysql> SELECT LENGTH(COMPRESS(REPEAT('a',1000)));-> 21mysql> SELECT LENGTH(COMPRESS(''));-> 0mysql> SELECT LENGTH(COMPRESS('a'));-> 13mysql> SELECT LENGTH(COMPRESS(REPEAT('a',16)));-> 15ENCODE('cleartext', CONCAT('my_random_salt','my_secret_password'))mysql> SELECT ENCRYPT('hello');-> 'VxuFAJXVARROc'mysql> SELECT MD5('testing');-> 'ae2b1fca515949e5d54fb22b8ed95575'mysql> SELECT SHA1('abc');-> 'a9993e364706816aba3e25717850c26c9cd0d89d'mysql> SELECT UNCOMPRESS(COMPRESS('any string'));-> 'any string'mysql> SELECT UNCOMPRESS('any string');-> NULL
