mysql aes encrypt_mysql加密函数aes_encrypt()和aes_decrypt()使用教程

aes_encrypt()和aes_decrypt()在mysql中是进行加密了,我们今天一起来和各位看看关于mysql中aes_encrypt()和aes_decrypt()函数的使用例子.

如果你需要对mysql某些字段进行加解密的话,使用mysql的加解密函数可能比程序中处理更方便.

mysql-encrypt-funcs.png以aes_encrypt()和aes_decrypt()为例

a_26277

特别需要注意的时mysql5.5及以下的版本仅支持aes-128-ecb模式,如果需要其它模式需要mysql5.6及以上版本才支持,可通过mysql全局变量如下方式指定:

mysql> SET block_encryption_mode = 'aes-256-cbc';

mysql> SET @key_str = SHA2('My secret passphrase',512);

mysql> SET @init_vector = RANDOM_BYTES(16);

mysql> SET @crypt_str = AES_ENCRYPT('text',@key_str,@init_vector);

mysql> SELECT AES_DECRYPT(@crypt_str,@key_str,@init_vector);

-----------------------------------------------

| AES_DECRYPT(@crypt_str,@key_str,@init_vector) |

-----------------------------------------------

| text                                          |

-----------------------------------------------

参考文档如下:

https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html#function_aes-encrypt

http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_aes-encrypt

关于加密的二进制数据在mysql中字段存什么类型(存blob还是varbinay类型)?

引用文档一段话:

Many encryption and compression functions return strings for which the result might contain arbitrary byte values. If you want to store these results, use a column with a VARBINARY or BLOB binary string data type. This will avoid potential problems with trailing space removal or character set conversion that would change data values, such as may occur if you use a nonbinary string data type (CHAR, VARCHAR, TEXT).

尽量使用blob类型,原因如下:

There is no trailing-space removal for BLOB columns when values are stored or retrieved.

For indexes on BLOB columns, you must specify an index prefix length.

BLOB columns can not have DEFAULT values.

二进制数据如何使用sql插入?

不可直接拼接sql插入,否则会被当成字符串处理,不可你可以将二进制数据转换程十六进制或base64插入,相应的,取出来的时候你也需要转换。但是通过mysql prepared statement方式可以插入stream data,如php pdo可以类似如下实现:

$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');

$stmt = $db->prepare("insert into images (id, contenttype, imagedata) values (?, ?, ?)");

$id = get_new_id(); // some function to allocate a new ID

// assume that we are running as part of a file upload form

// You can find more information in the PHP documentation

$fp = fopen($_FILES['file']['tmp_name'], 'rb');

$stmt->bindParam(1, $id);

$stmt->bindParam(2, $_FILES['file']['type']);

$stmt->bindParam(3, $fp, PDO::PARAM_LOB);

$db->beginTransaction();

$stmt->execute();

$db->commit();

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

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

相关文章

为什么选择mysql_为什么选择MySQL数据库即MySQL优势介绍

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户…

窗口尺寸,文档高,元素宽高的获取方式

一.元素宽高: window.onload function() { var oDiv document.getElementById(div1); /* width height style.width : 样式宽 clientWidth : 可视区宽 offsetWidth : 占位宽 */ alert( oDiv.style.width ); /…

Mariadb使用总结

一、pt-quert-digest使用1、安装perl程序12yum -y install perl-Time-HiResyum -y install perl-DBI二、登录授权123456789service mysqld stop/usr/bin/mysqld_safe --skip-grant-tables &use mysql;update user set passwordpassword(yournewpasswordhere) where userroo…

python执行到input后执行下一程序_Python基础知识储备,如何开关一个while循环

一、什么是循环循环语句就是在某种条件下,一遍一遍重复的执行某个动作。如:从1加到100,重复执行加法的动作,就需要用到循环。二、循环的三要素虽然循环是反复的执行某个动作,但是循环也会停止的,没有停止的…

Intellij idea添加单元测试工具

1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerator V2.0插件 ,我的是已经下载好的。下载后提示需要重启 3.下载后 点击需要测试的…

string.empty , , null 以及性能的比较

一:这种结论,个人觉得仍然存疑 http://www.cnblogs.com/wangshuai901/archive/2012/05/06/2485657.html 1.null null 关键字是表示不引用任何对象的空引用的文字值。null 是引用类型变量的默认值。那么也只有引用型的变量可以为NULL,如果 int…

mysql查询当前库的实例名_oracle查询数据库名、实例名等

oracle中:1、查询数据库名:select name,dbid from v$database;或者show parameter db_name;2、查询实例名:select instance_name from v$instance;或者show parameter instance_name;3、查询数据库域名:select value from v$param…

JPA 系列教程21-JPA2.0-@MapKeyColumn

MapKeyColumn 用JoinColumn注解和MapKeyColumn处理一对多关系 ddl语句 CREATE TABLE t_employee (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(255) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT2 DEFAULT CHARSETutf8;CREATE TABLE t_employee_map…

错误:在keystone中无法找到默认角色user_Kubernetes RBAC角色权限控制

摘选:https://i4t.com/4448.html在Kubernetes中所有的API对象都保存在ETCD里,可是,对这些API对象的操作,却一定是通过访问kube-apiserver实现的。我们需要APIServer来帮助我们授权工作,而在Kubernetes项目中,负责完成授…

JAVAWEB项目如何实现验证码

验证码基础 一.什么是验证码及它的作用 :验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答.可以防止恶意破解密码、刷票、论坛灌水、有效防止某个黑客对某一个特定…

在线判题系统(oj)效果分析图_在线代码编写平台开发分享

计算机专业的大学生应该都了解acm比赛,这种通过使用oj(online judge)系统在线编程刷题,实时反馈学习排名的方式能很大程度激发学生的学习热情。oj学习排名界面oj个人学习记录界面只是oj平台一般都只适用后端语言,如java,c#, c,C&a…

BZOJ1298:[SCOI2009]骰子的学问

Description Input 第一行为两个整数n, m。第二行有n个整数,为a1,a2, …, an。 Output 包含n行,每行m个1~nm的正整数,各不相同,以空格分开。如果有多解,输出任意一组解;如果无解,输出…

mysql交叉连接后生成的记录总数_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)_MySQL...

--用root用户登录系统,执行脚本--创建数据库create database mydb61 character set utf8 ;--选择数据库use mydb61;--增加 dbuser1用户--创建用户‘dbuser61’密码为‘dbuser61’拥有操作数据库mydb61的所有权限GRANT ALL ON mydb61.* TO dbuser61 IDENTIFIED BY &q…

IIS网站或系统验证码不显示问题——使用了托管的处理程序,但是未安装或未完整安装 ASP.NET...

在IIS上发布了一个系统,但是登陆页面的验证码图片一直出不来,尝试了各种办法,权限、路径、继承父类路径等都不管用,进入Login.html,对着无验证码图片的图标,右键复制图片的网址,粘贴到地址栏,出…

mysql索引有字符集_07. 类型、字符集、引擎和索引

字符集是什么?为了更好的识别中文、日文、英文、希腊语。对于常用的符号进行了编码,这个编码就是字符集。字符集确定了文字的存储方式。字符集相当于是计算机中人类的语言。举个例子:我说的是英文,所以我存储的时候要用英文文字来…

oracle--第一天PLSQL--bai

第一天: -- 创建book表 create table book ( bid number primary key, bname varchar2(20) not null, price number(10,2) not null ) -- 插入数据 insert into book(bid,bname,price)values(20,西游记,170.5); insert into book(bid,bname,price)values(12,红楼梦,…

mysql性能优化的8个方法_关键的十个MySQL性能优化技巧

与所有的关系型数据库一样,Mysql仿佛是一头让人难以琢磨的怪兽。它会随时停摆,让应用限于停滞,或者让你的业务处于危险之中。事实上,许多最常见的错误都隐藏在MySQL性能问题的背后。为了确保你的MySQL服务器能够一直处于全速运行的…

修改自己的centos输入法

当自己的centos连上网时,就可以修改自己的输入法了 http://jingyan.baidu.com/album/da1091fb3e7f8a027849d681.html?picindex2 转载于:https://www.cnblogs.com/xiaoyoucai/p/6262054.html

new float查询长度 c++_C/C++经典面试题

面试题 1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明, 但是只在一个地方定义。加入 extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分…

git相关资料

https://github.com/xirong/my-git 转载于:https://www.cnblogs.com/zhao1949/p/6265503.html