服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Mssql|Oracle|Redis|

服务器之家 - 数据库 - Mysql - MySQL 加密/压缩函数

MySQL 加密/压缩函数

2019-11-04 15:30mysql教程网 Mysql

在MySQL中,加密和压缩函数返回二进制串。对其中的许多函数而言,结果可能包含任意的字节值,如果想存储这些结果,你应该使用一个具有varbinary或者blob二进制串数据类型的列,这可避免潜在的删除尾部空白问题或者字符集转换

这些问题可能导致数据值的改变。一般而言,上述问题可能在你使用非二进制串数据类型(如char,varchar,text等数据类型)的情况下发生。

AES_ENCRYPT()和AES_DECRYPT()

AES_ENCRYPT()和AES_DECRYPT()可以加密/解密使用官方AES算法的数据。该算法使用128位密钥来编码,但用户可以将其扩展到256位。MySQL选用128位密钥,因为这样算法实现更快,而且对大多数用户而言它也足够安全了。

AES_ENCRYPT(str,key_str)函数加密一个字符串并返回一个二进制串。AES_DECRYPT(crypt_str, key_str) 函数可以解密使用官方AES(Advanced Encryption Standard)算法加密的数据并返回原有字符串,输入变量可以是任意长度。如果输入变量为NULL,那么该函数返回结果也为NULL。

因为AES是一个块级算法,需要使用补白来编码非偶数长度的字符串。

ENCODE()和DECODE()

ENCODE(str, pass_str):该函数使用pass_str作为密码来加密字符串str,其加密的结果可以通过DECODE()函数来解密。该函数返回的结果是一个同str等长。 DECODE(crypt_str, pass_str):该函数使用pass_str作为密码来解密使用ENCODE()加密后的字符串crypt_str。

DES_ENCRYPT()和DES_ENCRYPT()

DES_ENCRYPT(str[, {key_num|key_str}]):该函数使用三重DES算法连同给定的密钥来加密加密字符串。

DES_DECRYPT(crypt_str[, key_str]):该函数解密一个通过DES_ENCRYPT()加密的字符串,如果出现错误,该函数返回NULL。

COMPRESS()和UNCOMPRESS()

COMPRESS(string_to_compress):该函数压缩一个字符串并且返回一个二进制串。该函数需要MySQL已连同一个压缩库一块编译,比如zlib,否则该函数的返回值总为NULL。压缩后的字符串可以通过 UNCOMPRESS()函数来解压缩。UNCOMPRESS(string_to_uncompress):该函数解压缩一个通过COMPRESS() 函数压缩的字符串。如果变量不是一个压缩值,则结果返回为NULL。

PASSWORD()

PASSWORD(str):该函数用来加密存储在user表中 password列的MySQL密码。PASSWORD()函数由MySQL服务器中的认证系统使用,用户不应该在自己的应用中使用该函数。如果需要使用加密函数,可以考虑使用MD5()或者SHA1()来代替。

其加密结果示例如下:

MySQL 加密/压缩函数

在MySQL的系统数据库mysql的user表中,有一个名为Password的列,其中保存由password函数加密后的user的密码数据。如下所示:

MySQL 加密/压缩函数

ENCRYPT()

ENCRYPT(str[, salt]):该函数通过使用Unix crypt()系统调用来加密str,并返回一个二进制串。其中,salt变量应该是一个包含多于两个字符的字符串。如果salt没有给定,则使用一个随机值。如果crypt()系统调用在用户的操作系统上不可用(Windows操作系统便如此),该函数返回为NULL。

MD5()

MD5(str):该函数计算一个字符串的128位MD5校验和,返回的结果是由32个十六进制数字组成的二进制串。如果变量为NULL,则返回为NULL。

其加密结果示例如下:

MySQL 加密/压缩函数

SHA1()/SHA():

SHA1(str)/SHA(str)函数计算字符串str的160位SHA-1校验和。返回值是一个由40个十六进制数字组成的二进制串。如果变量为NULL,则返回NULL。

其加密结果示例如下:

MySQL 加密/压缩函数

延伸 · 阅读

精彩推荐
  • Mysql深入浅析Mysql联合索引最左匹配原则

    深入浅析Mysql联合索引最左匹配原则

    这篇文章主要介绍了Mysql联合索引最左匹配原则,使用联合索引的好处多多,具体内容详情大家跟随脚本之家小编一起学习吧...

    princekin3692019-07-07
  • MysqlMySQL使用正则表达式进行查询操作经典实例总结

    MySQL使用正则表达式进行查询操作经典实例总结

    这篇文章主要介绍了MySQL使用正则表达式进行查询操作,结合实例形式总结分析了各种常见匹配模式的查询操作实现技巧,具有一定参考借鉴价值,需要的朋友...

    程志伟3222019-07-08
  • MysqlMySQL 加密/压缩函数

    MySQL 加密/压缩函数

    在MySQL中,加密和压缩函数返回二进制串。对其中的许多函数而言,结果可能包含任意的字节值,如果想存储这些结果,你应该使用一个具有varbinary或者b...

    mysql教程网2792019-11-04
  • MysqlMysql动态更新数据库脚本的示例讲解

    Mysql动态更新数据库脚本的示例讲解

    今天小编就为大家分享一篇关于Mysql动态更新数据库脚本的示例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟...

    执笔记忆的空白2242019-06-13
  • MysqlMySQL 索引分析和优化

    MySQL 索引分析和优化

    索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。...

    mysql技术网1732019-10-15
  • MysqlMySQL 在触发器里中断记录的插入或更新?

    MySQL 在触发器里中断记录的插入或更新?

    MySQL 不象其它有些数据库可以在触发器中抛出异常来中断当然触发器的执行以阻止相应的SQL语句的执行。在MySQL的目录版本中还无法直接抛出异常。这样我...

    mysql教程网1842019-10-31
  • Mysqlmysql中blob数据处理方式

    mysql中blob数据处理方式

    本文通过实例代码给大家介绍了mysql中blob数据处理方式,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧...

    徐茂盛2852019-07-11
  • MysqlMySQL 错误处理例子[译]

    MySQL 错误处理例子[译]

    MySQL 错误处理例子,国外人写的,大家可以参考下。 ...

    mysql教程网2862019-11-04