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中奏响数据库操作的乐章(推荐)

    在MySQL中奏响数据库操作的乐章(推荐)

    本文详细介绍了如何在MySQL中进行数据库操作,包括创建、删除、修改数据库等,以及如何使用字符集和校验规则,以及备份和恢复数据库的方法,同时,还讨论了如何查看和修改数据库的结构和数据,总的来说,本文为读者提供了一份全面的MySQL数据库操作指南
    2024-10-10
  • MySQL8.0移除传统的.frm文件原因及解读

    MySQL8.0移除传统的.frm文件原因及解读

    MySQL 8.0移除传统的.frm文件,采用基于InnoDB的事务型数据字典,主要解决了元数据不一致、性能优化、架构简化、增强功能支持、兼容性与升级问题,这一变革提高了数据库的可靠性和性能,为未来的高级功能奠定了基础
    2025-03-03
  • Mysql调优Explain工具详解及实战演练(推荐)

    Mysql调优Explain工具详解及实战演练(推荐)

    这篇文章主要介绍了Mysql调优Explain工具详解及实战演练,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • MySQL修改root账号密码的方法

    MySQL修改root账号密码的方法

    这篇文章介绍了两种情况,知道root密码的情况下修改root密码,以及忘记了root密码,如何对root的密码进行修改,需要的朋友可以参考下
    2015-07-07
  • SQL查询至少连续n天登录的用户

    SQL查询至少连续n天登录的用户

    这篇文章介绍了SQL查询至少连续n天登录用户的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • mysql制作外键出现duplicate key name错误问题及解决

    mysql制作外键出现duplicate key name错误问题及解决

    这篇文章主要介绍了mysql制作外键出现duplicate key name错误问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • MySQL 根据条件多值更新的实现

    MySQL 根据条件多值更新的实现

    本文主要介绍了MySQL 根据条件多值更新的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • MySQL简化输入小技巧

    MySQL简化输入小技巧

    在这里我将介绍两个使用MySQL数据库时候简化输入的小技巧。
    2011-09-09
  • MySQL 5.7升级8.0报异常:ONLY_FULL_GROUP_BY的问题解决

    MySQL 5.7升级8.0报异常:ONLY_FULL_GROUP_BY的问题解决

    本文主要介绍了MySQL 5.7升级8.0报异常的问题解决,主要是ONLY_FULL_GROUP_BY,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • Mysql数据库双机热备难点分析

    Mysql数据库双机热备难点分析

    本文主要给大家介绍了在Mysql数据库双机热备其中的难点分析以及重要环节的经验心得,需要的朋友收藏分享下吧。
    2017-12-12

最新评论