mysql数据库的加密与解密方式

 更新时间:2024年01月24日 08:47:48   作者:今天写bug了吗?  
这篇文章主要介绍了mysql数据库的加密与解密方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前言

考虑到数据库层面的安全与加密,以及加密后不影响数据库的分析与使用。本文将介绍mysql下加密方式的实现

方式一

将字段属性设置为varbinary/binary/四个blob类型,等二进制字段属性。

create table user2
(
    id       int            null,
    username varbinary(200) null,
    id_card  varbinary(200) null
);

将username,id_card进行AES加密,密钥为key,存入表中

INSERT INTO user2 VALUES (1, AES_ENCRYPT('张三', 'key'), AES_ENCRYPT('360153411530193713', 'key'));

加密效果

查询的时候解密

select id, aes_decrypt(username,'key') as username,aes_decrypt(id_card,'key')as id_card from user2;

解密效果

方式二

将密文十六进制化,再存入varchar/char列。

此处需要用到HEX()来存入用UNHEX()取出

create table user
(
    id       int                                    null,
    username varchar(50)                            null,
    id_card  varchar(256) collate latin1_german1_ci null,
    password varchar(60)                            null
);

将username,id_card进行加密存入,密匙123zxq

insert into user(id, username, id_card, password)
values (2, hex(aes_encrypt('李四', '123zxq')), hex(aes_encrypt('12057108241111', '123zxq')), 123456);

加密效果

解密

select id,AES_DECRYPT(UNHEX(username),'123zxq'),AES_DECRYPT(UNHEX(id_card),'123zxq') as id_card from user;

解密效果

总结

采用的AES的加密方式与java是一致的。

不过加密必然导致牺牲查询的性能,用了加密函数后,查询该字段,必定不走索引。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法

    MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法

    这篇文章主要介绍了MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • MySQL5.6.31 winx64.zip 安装配置教程详解

    MySQL5.6.31 winx64.zip 安装配置教程详解

    这篇文章主要介绍了MySQL5.6.31 winx64.zip 安装配置教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • mysql升级到5.7时,wordpress导数据报错1067的问题

    mysql升级到5.7时,wordpress导数据报错1067的问题

    小编最近把mysql升级到5.7了,wordpress导数据报错,导入数据库时报1067 – Invalid default value for ‘字段名’的问题,怎么解决这个问题,下面小编把我的解决方案分享到脚本之家平台供大家参考,希望对大家有所帮助
    2021-05-05
  • mysql不是内部命令的错误解决方案

    mysql不是内部命令的错误解决方案

    在本篇内容里小编给各位分享的是一篇关于mysql不是内部命令的错误解决方案,需要的朋友们可以学习下。
    2020-08-08
  • 以Centos为例讲解MySQL在Linux中的部署

    以Centos为例讲解MySQL在Linux中的部署

    这篇文章主要介绍了以Centos为例讲解MySQL在Linux中的部署,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Mysql中MyISAM和InnoDB的区别及说明

    Mysql中MyISAM和InnoDB的区别及说明

    这篇文章主要介绍了Mysql中MyISAM和InnoDB的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • MySQL常见优化方案汇总

    MySQL常见优化方案汇总

    mysql数据库是中小微企业常用的一种数据化管理工具,它具有轻便,简洁,免费等特点。今天通过本文给大家介绍MySQL常见优化方案汇总,感兴趣的朋友一起看看吧
    2022-01-01
  • MySQL系列教程小白数据库基础

    MySQL系列教程小白数据库基础

    这篇文章主要为大家介绍了MySQL系列中的数据库基础,非常适合数据库小白的入门基础篇,详细的讲解了数据库的基本概念以及基础命令及操作示例,有需要的朋友可以借鉴参考下
    2021-10-10
  • MySQL死锁原因、检测与解决方案(含详细图文)

    MySQL死锁原因、检测与解决方案(含详细图文)

    死锁是指两个或多个事务在执行过程中,因争夺锁资源而造成的一种相互等待的现象,若无外力干预,这些事务将永远无法继续执行,这篇文章主要介绍了MySQL死锁原因、检测与解决方案的相关资料,需要的朋友可以参考下
    2026-04-04
  • Mysql实现定时清空一张表的旧数据并保留几条数据(推荐)

    Mysql实现定时清空一张表的旧数据并保留几条数据(推荐)

    这篇文章主要介绍了Mysql实现定时清空一张表的旧数据并保留几条数据,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论