MariaDB 给指定列值自动加密(持久数据加触发器)

文章目录

    • 代码
      • 插入时,自动加密
      • 更新时,自动加密
      • 查看触发器
      • 数据操作示例
        • update数据
        • 取出
        • 解密取
    • 注意
      • 一次尝试,看加密后数据长度

参考链接:
一篇非常好的讲解触发器的文章:示例、原理MySQL/MariaDB触发器。
用触发器自动加密的应用文章mysql触发器-插入更新数据时字段值自动加密。
delimiter的作用可以参考这里。

代码

插入时,自动加密

-- 删除原先的触发器
DROP TRIGGER IF EXISTS 【触发器名,如t_insert_tbStu_oValue】; 	
-- 创建触发器
DELIMITER $$
CREATE TRIGGER 【触发器名,如t_insert_tbStu_oValue】 		
BEFORE INSERT ON 【表名】FOR EACH ROW -- 触发在这张表新增数据前
BEGIN  -- 要执行的sql list 开始IF new.【列名】 IS NOT NULL THENSET new.【列名】 = to_base64(aes_encrypt(new.【列名】,"【你的密码】"));END IF;
END;
END; $$
DELIMITER ;

在MySQL/MariaDB中,

new 表: 表示向表中插入新记录之前,新记录保存在new表中,即inserted表。
对应的,old表表示删除目标记录之后将删除的记录保存在old表中,即deleted表。
update操作基本可以认为是先delete再insert的行为,所以也会触发这两张表。
sql中可以引用这两张表中的列,例如引用old.col_name

另外:

DELIMITER 默认是;,但是可以指定成其他的,例如由$$字代替,这样,在指定时DELIMITER $$和再次出现表示语句结束的$$之间,就可以出现;(不作为分隔符,但是可以作为嵌套的语句的结束),并且作为整体的一部分来执行。

更新时,自动加密

使用update语句时,插入的值,会是加密后的数据。

DROP TRIGGER IF EXISTS 【触发器名,如t_update_tbStu_oValue】;
DELIMITER $$
CREATE TRIGGER 【触发器名,如t_update_tbStu_oValue】 	-- 创建触发器
BEFORE UPDATE ON 【表名】 FOR EACH ROW
BEGIN  -- 要执行的sql list 开始IF new.【列名】IS NOT NULL   THENSET new.【列名】= TO_BASE64 (AES_ENCRYPT (new.【列名】,'【你的密码】'));END IF;
END;$$
DELIMITER ;

查看触发器

SHOW TRIGGERS;

数据操作示例

update数据
USE 【数据库名】;
SHOW TRIGGERS;
SELECT * FROM 【表名】LIMIT 10;
update 【表名】 SET oValue = 2 WHERE oName = "【筛选条件】";
SELECT * FROM 【表名】 LIMIT 10;

在这里插入图片描述

取出

直接取

SELECT oValue FROM 【表名】WHERE oName = "【筛选条件】";

在这里插入图片描述

解密取
SELECT AES_DECRYPT(FROM_BASE64(oValue), '【你的密码】') FROM (SELECT oValueFROM 【表名】WHERE oName = "【筛选条件】") as oValue;

在这里插入图片描述

注意

一次尝试,看加密后数据长度

-- 判断数据长度 
-- 源数据 120位
SELECT TO_BASE64(AES_ENCRYPT('yML93Cb2ZYnwrRUSyc+5ETicNwfbpVRKe03XGlSXHOKvA3lMWnHCof8wFnsaYwVWMvBl6YssUbQt/MngjFUbSW709eFr1nsOcSSZy9wn61nDvZN5qm1mypDN','【我的密码】'));-- 结果 172位
'oGxxBBxQVjN2CoVxiZ08dX3BLb9xCEFwQqEk4eZJjwVtuGHKYjyfsy+fBp66euJMwts8Fzv0rnQSisrdCopKS1HSx5YUmRUsEsZubPp7BepIqjwVEtU9uCCJXetFlhIcjyapt+clGVZx4gici4B6jPsKP2DB3C1nYq9FsJBS1Ts='

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/330205.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

许冉直播不治本,京东需要刘强东

图片|影视剧《纸牌屋》剧照 ©自象限原创 作者丨艾AA 编辑丨薛黎 这届618,消费者的热情还未显现,商家的怒火先爆发了。 5月21日京东618开幕次日,多家图书社抵制618图书大促登上了热搜。此次争议与去年双十一京东采销与电…

Predictable MDP Abstraction for Unsupervised Model-Based RL

ICML 2023 paper code Intro 文章提出了一种用于无监督基于模型强化学的方法,称为可预测MDP抽象(Predictable MDP Abstraction, PMA)。在MBRL中,一个关键部分是能够准确建模环境动力学动态模型。然而,这个预测模型误…

【C语言】程序员自我修养之文件操作

【C语言】程序员自我修养之文件操作 🔥个人主页:大白的编程日记 🔥专栏:C语言学习之路 文章目录 【C语言】程序员自我修养之文件操作前言一.文件介绍1.1为什么使用文件1.2文件分类1.3二进制文件和文本文件 二.文件的打开和关闭2.…

数据可视化技术头歌测试合集

努力是为了不平庸~ 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰 目录 时间趋势可视化-柱形图 第1关:“大胃王”比赛数据柱形图绘制——绘制柱形图的基本步骤 任务描述 相关知识 观察和处理数据 绘…

获得 AI Applied Skills 凭证:微软在线评估认证的注意事项

在你踏上微软的亚洲AI奥德赛之旅,完成基础课程学习后,你可以继续进行相应的评估,在交互式实验室体验中完成一系列任务,通过线上即时评估赢得认证。通过本文的介绍,可以帮助你了解评估认证的一些细节以及注意事项&#…

HCIP【VLAN综合实验】

目录 一、实验拓扑图: 二、实验要求: 三、实验思路: 四、实验步骤: 1、在交换机SW1,SW2,SW3配置VLAN和各个接口对应类型的配置 2、在路由器上面配置DHCP服务 3、在PC端进行测试(PC都要开启DHCP服务)…

python-鸡兔同笼问题:已知鸡和兔的总头数与总脚数。求笼中鸡和兔各几只?

【问题描述】典型的鸡兔同笼问题。 【输入形式】输入总头数和总脚数两个实数:h,f 【输出形式】笼中鸡和兔的个数:x,y 【样例输入】16 40 【样例输出】鸡12只,兔4只 【样例说明】输入输出必须保证格式正确。…

Python筑基之旅-MySQL数据库(三)

目录 一、数据库操作 1、创建 1-1、用mysql-connector-python库 1-2、用PyMySQL库 1-3、用PeeWee库 1-4、用SQLAlchemy库 2、删除 2-1、用mysql-connector-python库 2-2、用PyMySQL库 2-3、用PeeWee库 2-4、用SQLAlchemy库 二、数据表操作 1、创建 1-1、用mysql-…

jwtcracker下载安装出现错误

1.jwtcracker 用于爆破jwt秘钥 2.下载 ubuntu/kali安装c-jwt-cracker及使用方法-CSDN博客 参考这个大佬写的 但是我在这里出现了这个问题 显示Cannot initialize the default message digest sha256, aborting 我实在找不出来哪里有问题,所以直接换成docker …

centos7和centos8安装mysql5.6 5.7 8.0

https://dev.mysql.com/downloads/repo/yum/ 注意构造下http://repo.mysql.com/mysql-community-release-el*-*.noarch.rpm 【以centos7为例】 安装mysql5.6 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5…

C++进阶:C++11(列表初始化、右值引用与移动构造移动赋值、可变参数模版...Args、lambda表达式、function包装器)

C进阶:C11(列表初始化、右值引用与移动构造移动赋值、可变参数模版…Args、lambda表达式、function包装器) 今天接着进行语法方面知识点的讲解 文章目录 1.统一的列表初始化1.1{}初始化1.2 initializer_listpair的补充 2.声明相关关键字2.1a…

Axure RP 9 for Mac/win:重新定义交互原型设计的未来

在当今数字化时代,交互原型设计已成为产品开发中不可或缺的一环。Axure RP 9作为一款功能强大的交互原型设计软件,凭借其出色的性能和用户友好的界面,赢得了广大设计师的青睐。 Axure RP 9不仅支持Mac和Windows两大主流操作系统,…

重构2:重构的原则之笔记

最近在看重构2:改善既有代码的设计这本书,对于代码重构指导非常有帮助,然后也是做个笔记记录下,以下是我阅读本书的前两章的时候整理的思维导图:

VTK9.2.0+QT5.14.0绘制三维显示背景

背景 上一篇绘制点云的博文中,使用的vtkCameraOrientationWidget来绘制的坐标轴,最近又学习到两种新的坐标轴绘制形式。 vtkOrientationMarkerWidget vtkAxesActor 单独使用vtkAxesActor能够绘制出坐标轴,但是会随着鼠标操作旋转和平移时…

中文信息期刊投稿邮箱

《中文信息》杂志是国家新闻出版总署批准的国家级刊物(月刊),国内外公开发行,大十六开印刷。本刊主要反映我国中文信息处理的学术水平,重点刊登科技、经济、教育等领域的基础理论、科研与应用技术的学术论文&#xff0…

火山引擎边缘云亮相 Force 原动力大会,探索 AI 应用新范式

5月15日,2024 春季火山引擎 FORCE 原动力大会在北京正式举办。大会聚焦 AI 主题,以大模型应用为核心、以 AI 落地为导向,展示了火山引擎在大模型、云计算领域的实践应用,携手汽车、手机终端、金融、消费、互联网等领域的专家和企业…

5.1 Go 函数的定义与调用

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

sharded jedis pipelined 执行后 数据并未存入redis

前言 因为历史原因,在某个同步菜单操作的方法中先清除缓存,然后在初始化缓存。本来很正常的逻辑,但是这个清除是db查询获取所有的菜单 然后循环一条条删除 然后在db查询有效的菜单操作 在循环一条条插进去 经统计这个菜单操作大概有个7千个 …

Application Development using Large Language Models笔记

诸神缄默不语-个人CSDN博文目录 这是2023年NeurIPS Andrew Ng和Isa Fulford做的tutorial,关于如何用LLM来开发新产品的技术和思路:NeurIPS Tutorial Application Development using Large Language Models 文章目录 1. LLM基础2. 提示工程技巧3. 微调4.…

编程基础:掌握运算符与优先级

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、运算符的基石:加减乘除 二、比较运算符:判断数值大小 三、整除…