栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mysql数据库的加密与解密

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql数据库的加密与解密

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是一致的。不过加密必然导致牺牲查询的性能,用了加密函数后,查询该字段,必定不走索引。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/319092.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号