最近在做项目的时候,需要对一个数字串进行加密,但是加密密文又需要可以可以逆转,因此不能使用md5或sha之类的,只能用aes或des。翻了资料,尝试了在php层进行加密解密,用到了php的加密函数库,但是发现及时每次使用相同的明文和密钥进行aes加密,得到的密文每次都不一样,但是解密时却能得到相同的明文。这就是aes的好处。在PHP层将数字串进行加密,完后插入到表中,这完全是正确的。但是判断表中这个数字串是否存在就难搞了,因为使用相同的明文和密钥运算出来的密文跟上次不一样。这样的话,SELECT * FROM table WHERE column = ?,这个参数的值就肯定配对不上,找不到记录。也有另外一个方法,把表中的记录都拿出来,通过循环解密再与传入的参数进行配对,但是这样不好,每次检查都要遍历表和循环解密,估计内存和CPU会挂掉。无奈之下,只好到数据库层找找办法。
那就在MySQL这一层试试,发现MySQL也有aes加密的函数,尽管试试。实验完,发现MySQL的实现与php的不一样,MySQL中每次出来的密文都相同。虽然这样看起来不太妥,但是先这样办。其中有个不同的地方是,MySQL的aes函数加密出来的字符串是二进制的,需要转成16进制才能插入到表中。
-- AES加密
SELECT AES_ENCRYPT('1234567890123456','abcdefgh');
-- AES解密
SELECT AES_DECRYPT(AES_ENCRYPT('1234567890123456','abcdefgh') ,'abcdefgh') ;
-- AES加密后进行转成16进制
SELECT HEX(AES_ENCRYPT('1234567890123456','abcdefgh'));
-- AES加密后进行转成16进制,再转二进制进行解密
SELECT AES_DECRYPT(UNHEX(HEX(AES_ENCRYPT('1234567890123456','abcdefgh'))),'abcdefgh');
本文地址:http://ryan-d.iteye.com/blog/1562802
分享到:
相关推荐
开发工具Eclipse,数据库mySQL 框架springMVC+spring+myBatis
访问mysql数据库内含AES加密存储算法-keshe.rar 信息安全课设,做了一个访问数据库gui,有基于对象的访问控制功能以及AES加解密
您可能感兴趣的文章:MySQL加密和解密实例详解Java、JavaScript、Oracle、MySQL中实现的MD5加密算法分享PHP MySQL应用中使用XOR运算加密算法分享MySQL 加密/压缩函数mysql双向加密解密方式用法详解MySQL 整表加密...
以MySQL数据库为例,它内建了相应的加密函数(AES_ENCRYPT() )和解密函数(AES_DECRYPT())。 在建表的时候,要注意字段的类型.如下图所示: 在表中插入加密数据 上面的插入语句有三个字段,“用户名”、“密码”...
DES加密解密程序,VC源码值得学习借鉴
加密和解密函数:如MD5(), AES_ENCRYPT(), AES_DECRYPT()等。 其他实用函数:如INET_ATON(), INET_NTOA()等。 函数的组合使用:展示如何将多个函数组合使用以解决复杂问题。 函数性能考量:讨论不同函数的性能影响...
MySQL数据库字段加密,设置数据库字段类型,设置加密盐为全局变量
主要介绍了MySQL数据库对敏感数据加密及解密的实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值 ,需要的朋友可以参考下
Laravel开发-aesencrypt Laravel MySQL AES加密/解密
3.自定义(我自己定义了一个加密解密函数)加密序列,拿到内容没有序列无法解密 4.可更改用户密码,更改自定义KEY,更改加密存储内容 have fun! 如果有BUG请与我联系,也可以在我主页留言博客...
如果需要运用该代码直接clone项目,然后打包到本地或者私服,在通过注解就可以实现RSA和AES加密解密,无需您写任何的代码。 采用的技术springboot2.3.1 spring-boot-starter-freemarker mybatis-pl
MYSQL 日期函数大全,供大家一起共同分享学习。
该项目框架整合了SpringBoot+mybatis+zookeeper+dubbo+mysql+redis,项目大体由生产者provider、消费者customer和公共类common三部分组成,是目前分布式开发前后端分离的...现集成了thymeleaf,AES加密解密,验证码功能
STRCMP STRCMP()函数是MySQL里比较字符串的最简单方式之一。这个函数接受两个参数——要被比较的字符串。如果这个两个字符串相同,它就返回0;如果第一个大于第二个,它就返回1;如果第一个小于第二个,它就返回-1 ...
易语言MYSQL密码加密源码,MYSQL密码加密,password,模块_取数据摘要
MYSQL函数和操作符 操作符 . 操作符优先级 ..... 比较函数和操作符 ....控制流程函数 ... 与GROUP BY子句同时使用的函数和修改程序 . GROUP BY(聚合)函数 . GROUP BY修改程序 . 具有隐含字段的GROUP BY
研究MYSQL数据库的加解密方式,在网络攻防过程中具有重要的意义;试想一旦获取了网站一定的权限后,如果能够获取MYSQL中保存用户数据,通过解密后,即可通过正常途径来访问数据库;一方面可以直接操作数据库中的数据...
mysql存储过程,存储函数练习,里面有详细代码,供大家参考
再看了她通过AES_DECRYPT()函数加密了一个字符串,然后insert进去了,执行成功后,显示了一个warning: Query OK, 1 row affected, 1 warning (0.00 sec) (没有报错而是warning,大概是sql_mode的缘故) 此时她...