开发指南—函数—加密和压缩函数

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 本文主要介绍PolarDB-X支持的加密和压缩函数。

支持的加密和压缩函数

PolarDB-X目前支持mysql 5.7的大部分未过时的加密和压缩函数,具体信息见下表:

函数名 描述
AES_DECRYPT 使用AES算法解密
AES_ENCRYPT 使用AES算法加密
RANDOM_BYTES 返回随机字节向量
MD5 计算MD5 128位校验和
SHA1, SHA 计算SHA-1 160位校验和
SHA2 计算SHA2校验和

对于加密和压缩函数,如果需要存储字节类型的返回结果,推荐使用VARBINARY或BLOB字段,避免尾部空白字符的移除或字符集转换问题(如CHAR/VARCHAR/TEXT类型)。

AES_DECRYPT(crypt_str, key_str [, init_vector])

根据输入的密文crypt_str、密钥key_str以及初始向量init_vector(可选参数),返回解密后的明文结果。具体解密算法与使用方法可参考AES_ENCRYPT函数。

AES_ENCRYPT(str, key_str [, init_vector])

根据输入的明文str、密钥key_str以及初始向量init_vector(可选参数),返回加密后的密文结果。在加密时具体使用的AES算法由系统变量block_encryption_mode决定,该变量取值的格式为aes-keylen-mode,其中keylen为密钥的位长度(合法取值为128/192/256),mode为加密模式,PolarDB-X支持以下六种加密模式:

加密模式 是否需要初始向量
ECB
CBC
CFB1
CFB8
CFB128
OFB

对于需要初始向量的加密模式,初始向量必须大于等于16字节(超出16字节部分将自动截断);对于不需要初始向量的加密模式,初始向量参数将被自动忽略。

示例:


mysql> SET block_encryption_mode = 'aes-128-ofb';
mysql> SET @iv = RANDOM_BYTES(16);
mysql> SET @key = SHA2('secret key', 224);
mysql> set @crypto = AES_ENCRYPT('polardb-x', @key, @iv);
mysql> select @crypto;
+---------------------------+
| @crypto                   |
+---------------------------+
|  ß÷s,(ÿýÂåîA}ýO          |
+---------------------------+
mysql> SELECT AES_DECRYPT(@crypto, @key, @iv);
+---------------------------------+
| AES_DECRYPT(@crypto, @key, @iv) |
+---------------------------------+
| polardb-x                       |
+---------------------------------+

RANDOM_BYTES(len)

返回len字节长度的随机二进制字符串,长度len的合法取值为1~1024。

示例:


mysql> select HEX(RANDOM_BYTES(16));
+----------------------------------+
| HEX(RANDOM_BYTES(16))            |
+----------------------------------+
| C83CF8A2499F407E15F34F6E32948CEA |
+----------------------------------+

MD5(str)

计算MD5 128位检验和。

示例:


mysql> select MD5('polardb-x');
+----------------------------------+
| MD5('polardb-x')                 |
+----------------------------------+
| fa4900656bcd39dc90024e733fa4531f |
+----------------------------------+

SHA1(str), SHA(str)

计算SHA-1 160位校验和。该函数安全性强于MD5。

示例:


mysql> select SHA1('polardb-x');
+------------------------------------------+
| SHA1('polardb-x')                        |
+------------------------------------------+
| a2e83af051f032b500f13c369976298208d821d1 |
+------------------------------------------+

SHA2(str, hash_length)

计算SHA-2族散列算法结果,参数hash_length决定了检验和结果的位数,合法取值包括:224、256、384、512和0(等价于256)。该函数安全性强于MD5和SHA1。

示例:


mysql> select SHA2('polardb-x', 384);
+--------------------------------------------------------------------------------------------------+
| SHA2('polardb-x', 384)                                                                           |
+--------------------------------------------------------------------------------------------------+
| 20222037666be5234d9af3c391f9c3a1a3e39b910f3f8081c32d972acca890c818d6c70025ff6c6d4b648bd91d66a3fe |
+--------------------------------------------------------------------------------------------------+
相关文章
|
17天前
|
存储 数据安全/隐私保护
如何将加密和解密函数应用到Pinia状态中?
如何将加密和解密函数应用到Pinia状态中?
208 124
|
17天前
|
存储 JSON 安全
加密和解密函数是如何实现的?
加密和解密函数是如何实现的?
281 123
|
2月前
|
存储 关系型数据库 MySQL
MYSQL数据加密压缩函数应用实战指南。
总的来说,加密和压缩是维护MySQL数据库中数据安全性和效率的有效手段。使用时需权衡性能与安全,合理应用加密和压缩函数。在设计数据库架构时要考虑到加密字段的查询性能,因为加密可能使得一些索引失效。压缩数据能有效减少存储空间的占用,但在服务器负载较高时应避免实时压缩和解压,以免影响总体性能。
76 10
|
7月前
|
存储 监控 算法
taosd 写入与查询场景下压缩解压及加密解密的 CPU 占用分析
在当今大数据时代,时序数据库的应用越来越广泛,尤其是在物联网、工业监控、金融分析等领域。TDengine 作为一款高性能的时序数据库,凭借独特的存储架构和高效的压缩算法,在存储和查询效率上表现出色。然而,随着数据规模的不断增长,在保证数据安全性和存储效率的同时,如何优化 CPU 的资源占用,成为了一个值得深入讨论的问题。
127 1
|
7月前
|
存储 安全 数据安全/隐私保护
Mac如何用命令行处理文件加密压缩
本教程介绍在Mac中通过命令行实现文件和文件夹的加密压缩、分卷处理及解压操作。主要内容包括:1) 使用`zip -er`命令加密压缩文件夹,`zip -e`命令加密压缩单个文件;2) 使用`split`命令按指定大小分割ZIP文件;3) 通过`cat`命令合并分卷文件并使用`unzip`解压。适用于需要安全传输和存储数据的场景。
|
12月前
|
数据安全/隐私保护 Python
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
如何使用Python的zipfile模块生成密码表并尝试暴力破解加密的ZIP压缩文件。
275 1
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
|
数据安全/隐私保护
如何自动(定时/间隔/重复)执行 同步文件、备份打包加密压缩文件
该文提供了一个工具的下载链接,分别在百度网盘和蓝奏云,提取码分别为&qwu2"和"2r1z"。工具的使用需结合之前发布的两篇教程:《快捷自由定时重启、注销、关机》和《如何从多个文件夹内转移全部文件(忽略文件夹的结构)(进行复制)(再打包)》。操作步骤包括设定"来源路径"进行Zip打包,启用"备份模式",然后保存批量复制任务,最后在定时器中执行已设置的批量文件复制任务。文中附有相关截图以供参考。
|
算法 安全 数据安全/隐私保护
支付系统---微信支付09------数字签名,现在Bob想要给Pink写一封信,信件的内容不需要加密,怎样能够保证信息的完整性,使用信息完整性的主要手段是摘要算法,散列函数,哈希函数,H称为数据指纹
支付系统---微信支付09------数字签名,现在Bob想要给Pink写一封信,信件的内容不需要加密,怎样能够保证信息的完整性,使用信息完整性的主要手段是摘要算法,散列函数,哈希函数,H称为数据指纹
|
PHP 数据安全/隐私保护
|
SQL 存储 关系型数据库
MySQL 时间日期函数,流程控制函数,加密解密函数以及聚合查询函数
MySQL 时间日期函数,流程控制函数,加密解密函数以及聚合查询函数
124 0