MYSQL加密和压缩函数详解和实战(含示例)
MySQL提供了多种加密和压缩方式,可以帮助保护数据库中的敏感数据。以下是一些常见的MySQL加密和压缩方法参考:
建议收藏以备后续用到查阅参考。
目录
一、AES_ENCRYPT AES加密
二、AES_DECRYPT AES解密
三、COMPRESS 压缩字符串
四、UNCOMPRESS 解压COMPRESS压缩字符串
五、UNCOMPRESSED_LENGTH 取压缩字符串的原始字符串的长度
六、MD5 md5加密
七、RANDOM_BYTES 随机生成指定长度字符串
八、SHA 字符串的SHA-1 160 位校验和
九、SHA1 字符串的SHA-1 160 位校验和
十、SHA2 给定字符串的 SHA-2 摘要
十一、STATEMENT_DIGEST 取SQL的哈希值
十二、STATEMENT_DIGEST_TEXT 取SQL的规范语句摘要
一、AES_ENCRYPT AES加密
MySQL AES_ENCRYPT() 函数使用 AES 加密算法加密一个字符串。
语法:
SELECT AES_ENCRYPT(str, key_str)
参数说:
-
str:必需的。一个要加密的字符串。 -
key_str:必需的。密钥。
返回值:
- 加密后的二进制字符串。
- 返回
NULL情况:任意参数为NULL。
示例:
mysql> SELECT AES_ENCRYPT('hello', '123456'), AES_ENCRYPT(null, '123456'), AES_ENCRYPT('hello', NULL);
+--------------------------------+-----------------------------+----------------------------+
| AES_ENCRYPT('hello', '123456') | AES_ENCRYPT(null, '123456') | AES_ENCRYPT('hello', NULL) |
+--------------------------------+-----------------------------+----------------------------+
| ÈòIL&WÅæ4@s´ | NULL | NULL |
+--------------------------------+-----------------------------+----------------------------+
1 row in set (0.00 sec)
二、AES_DECRYPT AES解密
MySQL AES_DECRYPT() 函数使用 AES 加密算法解密一个由 AES_ENCRYPT() 加密后的字符串。
语法:
SELECT AES_DECRYPT(crypt_str, key_str)
参数说明:
crypt_str:必需的。一个要加密的字符串。key_str:必需的。密钥。
返回值:
- 解密后的原始明文字符串。
- 返回
NULL情况:任意参数为NULL。
示例:
SELECT AES_DECRYPT(AES_ENCRYPT('hello', 'abcde'), 'abcde'), // helloAES_DECRYPT(AES_ENCRYPT('hello', 'abcde'), null); // NULL
三、COMPRESS 压缩字符串
MySQL COMPRESS() 函数压缩一个字符串并返回压缩后的二进制字符串。
要解压缩 COMPRESS() 函数压缩后的内容,请使用 UNCOMPRESS() 函数。
语法:
COMPRESS(str)
参数说明:
-
str:必需的。一个要压缩的字符串。
返回值:
- 压缩后的二进制字符串。
- 返回
NULL情况:参数为NULL。
示例:
mysql> SELECT COMPRESS('hello'), LENGTH(COMPRESS('hello')),COMPRESS(''),LENGTH(COMPRESS(''));
+-------------------+---------------------------+--------------+----------------------+
| COMPRESS('hello') | LENGTH(COMPRESS('hello')) | COMPRESS('') | LENGTH(COMPRESS('')) |
+-------------------+---------------------------+--------------+----------------------+
| x??H??? , | 17 | | 0 |
+-------------------+---------------------------+--------------+----------------------+
看似压缩后的字符串比原字符串还要长。
下面用函数REPEAT 函数来生成指定长度的字符串再压缩看。
mysql> SELECT LENGTH(REPEAT('abc', 1000)), LENGTH(COMPRESS(REPEAT('abc', 1000)));
+-----------------------------+---------------------------------------+
| LENGTH(REPEAT('abc', 1000)) | LENGTH(COMPRESS(REPEAT('abc', 1000))) |
+-----------------------------+---------------------------------------+
| 3000 | 33 |
+-----------------------------+---------------------------------------+
压缩效果:3000长度的字符串压缩后长度为33
四、UNCOMPRESS 解压COMPRESS压缩字符串
MySQL UNCOMPRESS() 函数解压缩 COMPRESS() 函数压缩后的字符串。
语法:
UNCOMPRESS(str_to_uncompress)
参数说明:
-
str_to_uncompress:必需的。一个要解压缩的字符串。
返回值:
- 解压缩指定的字符串
str_to_uncompress,并将结果作为二进制字符串返回。 - 返回
NULL情况:参数为NULL。
示例:
mysql> SELECT UNCOMPRESS(COMPRESS('abcdefghjiklmnopqrstuvwxtz')),COMPRESS('abcdefghjiklmnopqrstuvwxtz');
+----------------------------------------------------+----------------------------------------+
| UNCOMPRESS(COMPRESS('abcdefghjiklmnopqrstuvwxtz')) | COMPRESS('abcdefghjiklmnopqrstuvwxtz') |
+----------------------------------------------------+----------------------------------------+
| abcdefghjiklmnopqrstuvwxtz | x?KLJNIMK????????/(,*.)-+?(? ?} |
+----------------------------------------------------+----------------------------------------+
五、UNCOMPRESSED_LENGTH 取压缩字符串的原始字符串的长度
MySQL UNCOMPRESSED_LENGTH() 函数返回一个压缩的字符串的原始字符串的长度。
语法:
UNCOMPRESSED_LENGTH(compressed_str)
参数说明:
- compressed_str:必需的。一个使用 COMPRESS() 函数压缩后的字符串。
返回值:
- 一个压缩的字符串的原始字符串的长度。
- 返回
NULL情况:参数为NULL。
示例:
mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS('abcdefghjiklmnopqrstuvwxtz')),COMPRESS('abcdefghjiklmnopqrstuvwxtz');
+-------------------------------------------------------------+----------------------------------------+
| UNCOMPRESSED_LENGTH(COMPRESS('abcdefghjiklmnopqrstuvwxtz')) | COMPRESS('abcdefghjiklmnopqrstuvwxtz') |
+-------------------------------------------------------------+----------------------------------------+
| 26 | x?KLJNIMK????????/(,*.)-+?(? ?} |
+-------------------------------------------------------------+----------------------------------------+
六、MD5 md5加密
MySQL MD5() 函数计算一个给定字符串的 MD5 摘要,并将结果作为一个 32 位的由十六进制字符组成的字符串返回。
语法:
MD5(str)
参数说明:
str:必需的。一个要计算 MD5 值的字符串。
返回值:
- 32 位的由十六进制字符组成的字符串。
- 返回
NULL情况:参数为NULL。
示例:
mysql> SELECT MD5('abc');
+----------------------------------+
| MD5('abc') |
+----------------------------------+
| 900150983cd24fb0d6963f7d28e17f72 |
+----------------------------------+
七、RANDOM_BYTES 随机生成指定长度字符串
MySQL RANDOM_BYTES() 函数随机生成一个指定长度的的二进制串。
语法:
RANDOM_BYTES(len)
参数说明:
len:必需的。一个要计算 RANDOM_BYTES 值的字符串。
返回值:
- 一个长度为
len的由随机字节产生的字符串。 - 返回
NULL情况:参数len为NULL。
示例:
mysql> SELECT RANDOM_BYTES(10),LENGTH(RANDOM_BYTES(10)),RANDOM_BYTES(NULL);
+------------------+--------------------------+--------------------+
| RANDOM_BYTES(10) | LENGTH(RANDOM_BYTES(10)) | RANDOM_BYTES(NULL) |
+------------------+--------------------------+--------------------+
| ?m ?? | 10 | NULL |
+------------------+--------------------------+--------------------+
八、SHA 字符串的SHA-1 160 位校验和
MySQL SHA() 函数计算并返回给定字符串的 SHA-1 160 位校验和。 SHA() 函数与 MD5() 函数类似,也是一种计算摘要的函数。
MySQL SHA() 函数等效于 SHA1() 函数。
语法:
SHA(str)
参数说明:
-
str:必需的。一个要计算 SHA-1 160 位校验和的字符串。
返回值:
- 指定字符串的 SHA-1 160 位校验和。(40 位的由十六进制字符组成的字符串)
- 返回
NULL情况:参数为NULL。
示例:
mysql> SELECT SHA('hello'),SHA(NULL);
+------------------------------------------+-----------+
| SHA('hello') | SHA(NULL) |
+------------------------------------------+-----------+
| aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d | NULL |
+------------------------------------------+-----------+
九、SHA1 字符串的SHA-1 160 位校验和
MySQL SHA1() 函数计算并返回给定字符串的 SHA-1 160 位校验和。 SHA1() 函数与 MD5() 函数类似,也是一种计算摘要的函数。
MySQL SHA1() 函数等效于 SHA() 函数。
十、SHA2 给定字符串的 SHA-2 摘要
MySQL SHA2() 函数计算并返回给定字符串的 SHA-2 摘要,包括: SHA-224, SHA-256, SHA-384, 和 SHA-512 算法。
SHA2() 函数与 MD5() 函数类似,也是一种计算摘要的函数。
语法:
SHA2(str, hash_length)
参数说明:
str:必需的。一个要计算 SHA-2 校验和的字符串。hash_length:必需的。哈希长度,可用值包括224,256,384,512和0(相当于256), 分别对应了 SHA-224, SHA-256, SHA-384, 和 SHA-512 算法。
返回值:
- 一个由十六进制字符组成的字符串,它是指定字符串的 SHA-2 摘要。
示例:
mysql> SELECT SHA2('hello', 224),SHA2(NULL, 1);
+----------------------------------------------------------+---------------+
| SHA2('hello', 224) | SHA2(NULL, 1) |
+----------------------------------------------------------+---------------+
| ea09ae9cc6768c50fcee903ed054556e5bfc8347907f12598aa24193 | NULL |
+----------------------------------------------------------+---------------+
十一、STATEMENT_DIGEST 取SQL的哈希值
MySQL STATEMENT_DIGEST() 函数计算以字符串形式给定的 SQL 语句的语句摘要哈希值并返回。
语法:
STATEMENT_DIGEST(sql_stmt)
参数说明:
- sql_stmt:必需的。一个要计算语句摘要哈希值的字符串。
返回值:
- 以字符串形式给定的 SQL 语句的语句摘要哈希值。
示例:
mysql> SELECT STATEMENT_DIGEST('SELECT 1'),STATEMENT_DIGEST(NULL);
+------------------------------------------------------------------+------------------------+
| STATEMENT_DIGEST('SELECT 1') | STATEMENT_DIGEST(NULL) |
+------------------------------------------------------------------+------------------------+
| d1b44b0c19af710b5a679907e284acd2ddc285201794bc69a2389d77baedddae | NULL |
+------------------------------------------------------------------+------------------------+
十二、STATEMENT_DIGEST_TEXT 取SQL的规范语句摘要
MySQL STATEMENT_DIGEST_TEXT() 函数返回以字符串形式给定的 SQL 语句的规范语句摘要。
语法:
STATEMENT_DIGEST_TEXT(sql_stmt)
参数说明:
-
sql_stmt:必需的。一个要计算规范语句摘要的字符串。
返回值:
- SQL 语句的规范语句摘要。
- 返回
NULL情况:任意参数为NULL。
示例:
mysql> SELECT STATEMENT_DIGEST_TEXT('SELECT * FROM t WHERE a = 1'),STATEMENT_DIGEST_TEXT(NULL);
+------------------------------------------------------+-----------------------------+
| STATEMENT_DIGEST_TEXT('SELECT * FROM t WHERE a = 1') | STATEMENT_DIGEST_TEXT(NULL) |
+------------------------------------------------------+-----------------------------+
| SELECT * FROM `t` WHERE `a` = ? | NULL |
+------------------------------------------------------+-----------------------------+
相关文章:
MYSQL加密和压缩函数详解和实战(含示例)
MySQL提供了多种加密和压缩方式,可以帮助保护数据库中的敏感数据。以下是一些常见的MySQL加密和压缩方法参考: 建议收藏以备后续用到查阅参考。 目录 一、AES_ENCRYPT AES加密 二、AES_DECRYPT AES解密 三、COMPRESS 压缩字符串 四、UNCOMPRESS 解压…...
redis Redis::geoAdd 无效,phpstudy 如何升级redis版本
redis 查看当前版本命令 INFO SERVERwindows 版redis 进入下载 geoadd 功能在3.2之后才有的,但是phpstudy提供的最新的版本也是在3.0,所以需要升级下 所以想出一个 挂狗头,卖羊肉的方法,下载windows 的程序,直接替…...
2024重庆大学计算机考研分析
24计算机考研|上岸指南 重庆大学 重庆大学计算机考研招生学院是计算机学院和大数据与软件学院。目前均已出拟录取名单。 重庆大学计算机学院是我国高校最早开展计算机研究的基地之一,1978年和1986年获西南地区首个硕士和博士点,1998年成立计算机学院&a…...
二、Lua数据类型
文章目录 一、数据类型nil二、数据类型boolean三、数据类型number四、数据类型String(一)用单引号或双引号:(二)可以包含换行的字符串(三)字符串与数字做数学运算时,优先将字符串转换…...
Grabcut算法在图片分割中的应用
GrabCut算法原理 Grabcut是基于图割(graph cut)实现的图像分割算法,它需要用户输入一个bounding box作为分割目标位置,实现对目标与背景的分离/分割,与KMeans与MeanShift等图像分割方法不同。 Grabcut分割速度快,效果好࿰…...
常用的Linux的指令
目录 常用指令 1、文件和目录操作: 2、文件查看和编辑 3、系统信息 4、进程管理 5、用户和权限 6、网络操作 7、压缩和解压 8、软件包管理 常用指令 1、文件和目录操作: ls:列出目录内容 cd: 切换目录 pwd:显…...
【STM32】GPIO输出
1 GPIO简介 (1)GPIO(General Purpose Input Output)通用输入输出口 (2)可配置为8种输入输出模式 (3)引脚电平:0V~3.3V,部分引脚可容忍5V(可以输…...
【Go语言从入门到实战】反射编程、Unsafe篇
反射编程 reflect.TypeOf vs reflect.ValueOf func TestTypeAndValue(t *testing.T) {var a int64 10t.Log(reflect.TypeOf(a), reflect.ValueOf(a))t.Log(reflect.ValueOf(a).Type()) }判断类型 - Kind() 当我们需要对反射回来的类型做判断时,Go 语言内置了一个…...
vue实现对话框指定某个对话内容的滚动到指定位置(滚动到可视区域的中间位置)
1、使用el-scrollbar实现定位滚动(elementui组件库) 如何滚动:参考链接 比如说指定某条对话内容滚动到可视区域的中间 html结构: <div class"chat-list" id"chat-list"><el-scrollbar ref"scro…...
【RTP】2:RtpPacket、RtpPacketToSend 创建、修改的简要分析
【RTP】1: RTPSenderAudio::SendAudio继续对如何做修改,比如修改扩展 做分析。查找扩展 一个已知的已经在packet中存在的扩展bool RtpPacket::IsExtensionReserved(ExtensionType type) const {uint8_t id = extensions_.GetId(type);...
汽车租聘管理与推荐系统Python+Django网页界面+协同过滤推荐算法
一、介绍 汽车租聘管理与推荐系统。本系统使用Python作为主要编程语言,前端采用HTML、CSS、BootStrap等技术搭建前端界面,后端采用Django框架处理用户的请求。创新点:使用协同过滤推荐算法实现对当前用户个性化推荐。 其主要功能如下&#x…...
qt pdf 模块简介
文章目录 1. 技术平台2. Qt pdf 模块3. cmake 使用模块4. 许可证5. 简单示例5.1 CMakeLists.txt5.2 main.cpp 6. 总结 1. 技术平台 项目说明OSwin10 x64Qt6.6compilermsvc2022构建工具cmake 2. Qt pdf 模块 Qt PDF模块包含用于呈现PDF文档的类和函数。 QPdfDocument 类加载P…...
Spring Boot WebSocket 客户端
介绍 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它可以提供实时的、双向的数据传输。Spring Boot 提供了对 WebSocket 的支持,我们可以使用 Spring Boot WebSocket 客户端来连接到 WebSocket 服务器,并进行实时通信。 本文将…...
第五题-kotori和素因子【第六届传智杯程序设计挑战赛解题分析详解复盘】(JavaPythonC++实现)
🚀 欢迎来到 ACM 算法题库专栏 🚀 在ACM算法题库专栏,热情推崇算法之美,精心整理了各类比赛题目的详细解法,包括但不限于ICPC、CCPC、蓝桥杯、LeetCode周赛、传智杯等等。无论您是刚刚踏入算法领域,还是经验丰富的竞赛选手,这里都是提升技能和知识的理想之地。 ✨ 经典…...
【服务器能干什么】二十分钟搭建一个属于自己的 RSS 服务
如果大家不想自己捣鼓,只是想尝尝鲜,可以在下面留言,我后台帮大家开几个账号玩一玩。 哔哩哔哩【高清版本可以点击去吐槽到 B 站观看】:【VPS服务器到底能干啥】信息爆炸的年代,如何甄别出优质的内容?你可能需要自建一个RSS服务!_哔哩哔哩_bilibili 前言 RSS 服务 市…...
热门免费api接口:含核验API,物流api,短信api,天气api。。。
热门免费api接口:含核验API,物流api,短信api,天气api。。。 银行卡二要素:检测输入的姓名、银行卡号是否一致。毫秒级响应、直联保障,支持全国所有银联卡。银行卡三要素:检测输入的姓名、身份证号码、银行卡号是否一致。毫秒级响…...
基于AC6969的蓝牙控制RGB彩灯
程序的实现思路:单片机与手机app之间通过蓝牙实现通讯,通过点击屏幕上的对应色块然后app会把对应的RGB值发送到单片机。然后单片机会对数据进行解析然后把数字量转换为模拟量,然后通过PWM控制IO口输出不同的电压以此来达到控制RGB灯 RGB彩灯原…...
【C++高阶(五)】哈希思想--哈希表哈希桶
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:C从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学习C 🔝🔝 哈希结构 1. 前言2. unordered系列容器3. 哈希概…...
45、Flink 的指标体系介绍及验证(1)-指标类型及指标实现示例
Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...
SAP创建ODATA服务-Structure
SAP创建ODATA服务-Structure 1、创建数据字典 进入se11创建透明表ZRICO_USR,并创建对应字段 2、创建OData service 首先创建Gateway service project,事务码:SEGW,点击Create Project 按钮 Gateway service Project分四个部分:…...
Redis:延迟双删的适用边界与落地细节哨
pagehelper整合 引入依赖com.github.pagehelperpagehelper-spring-boot-starter2.1.0compile编写代码 GetMapping("/list/{pageNo}") public PageInfo findAll(PathVariable int pageNo) {// 设置当前页码和每页显示的条数PageHelper.startPage(pageNo, 10);// 查询数…...
深度解码:华为IPD流程管理体系L1-L5最佳实践与数字化转型架构全景(PPT)
在当今高度竞争的商业环境中,企业的核心竞争力不再仅仅取决于单一的技术突破或资本优势,而是取决于其业务流程的成熟度与组织运作的系统性。华为作为全球领先的科技企业,其背后支撑庞大业务帝国高效运转的正是其历经多年打磨的IPD(…...
OpenClaw错误处理机制:Phi-3-vision识别失败自动重试方案
OpenClaw错误处理机制:Phi-3-vision识别失败自动重试方案 1. 为什么需要错误处理机制 上周我在用OpenClaw对接Phi-3-vision模型时,遇到了一个典型问题:当模型识别图片中的文字内容时,偶尔会出现识别失败或结果不准确的情况。这直…...
告别格式烦恼:如何用Chrome扩展一键转换网页图片格式?
告别格式烦恼:如何用Chrome扩展一键转换网页图片格式? 【免费下载链接】Save-Image-as-Type Save Image as Type is an chrome extension which add Save as PNG / JPG / WebP to the context menu of image. 项目地址: https://gitcode.com/gh_mirror…...
OpenClaw错误处理机制:千问3.5-35B-A3B-FP8任务失败排查
OpenClaw错误处理机制:千问3.5-35B-A3B-FP8任务失败排查 1. 为什么需要关注错误处理机制 上周我在本地部署了千问3.5-35B-A3B-FP8模型,准备用OpenClaw实现一个自动化内容处理流程。本以为配置好模型地址就能顺利运行,结果第一个任务就卡在了…...
# MyBatis Mapper文件不想手动注册?启动时自动扫描conf目录,动态拼配置
MyBatis Mapper文件不想手动注册?启动时自动扫描conf目录,动态拼配置 非科班野生程序员,深耕政务信息化20年。从VC到PB再到Java,自研框架browise也打磨了十几年。最近整理框架代码,发现不少有趣的决策,写出…...
rapidocr v3.8.0发布了
🚀 功能特性 在 ClawHub 中添加 RapidOCR Skill (https://clawhub.ai/rapidai/rapidocr)(docker) 为每个引擎添加 Docker 开发环境 (#649),由 LocNgoXuan23 在 1f78b76 中贡献(python) 为 API 和 CLI 添加 model_root_dir(模型根目录&#x…...
喔去,litellm 竟然被投毒了,赶紧检查你的机器中招了没有送
一、什么是setuptools? setuptools 是一个用于创建、分发和安装 Python 包的核心库。 它可以帮助你: 定义 Python 包的元数据(如名称、版本、作者等)。 声明包的依赖项,确保你的包能够正确运行。 构建源代码分发包&…...
7脚 LED数码屏的刷新显示,乱码请指正
我是新手近段时间的工作是点亮7脚LED数码屏,刷新时遇到了困惑请大家帮助指正,在此表示非常感谢。 下面是7脚LED数码屏结构图。 用了7个 case下面是刷新代码switch(ScanPinNum){// ---------------- CASE1: PIN1------------------------case 1: …...
OpenSSF Scorecard安全策略检查:保护代码仓库的终极完整指南
OpenSSF Scorecard安全策略检查:保护代码仓库的终极完整指南 【免费下载链接】scorecard OpenSSF Scorecard - Security health metrics for Open Source 项目地址: https://gitcode.com/gh_mirrors/sc/scorecard OpenSSF Scorecard是一款由Open Source Secu…...
