一、敏感数据加密
Mysql的AES_ENCRYPT和DES_ENCRYPT函数
1、数据加密;
直接使用Mysql提供的AES_ENCRYPT(str,key)和AES_DECRYPT(str,key);来完成文本类型敏感信息的加密;
采用的是对称加密算法,我们需要注意保存key;
基本原理:
在保存数据的时候,使用AES_ENCRYPT函数对要加密的数据进行加密保存;
在读取数据的时候,使用AES_DECRYPT函数对密文进行解密读取;
注意:使用AES_ENCRYPT函数加密之后的内容需要使用BLOB进行保存;
mapper中传入密钥字段:
业务逻辑中加入key:
保存数据的时候,加密:
查询解密:
如果出现乱码,使用mysql中的函数:
二、数据库防篡改
1.对要防止篡改的列,在保存或者修改(正常程序通过应用进行保存和修改)通过一个算法得到受保护的列的一个对应密文;把这个密文保存到对应的列中;
2.在读取数据的时候,得到防止篡改的列的值,在应用中,再次对这些数据通过算法得到密文2;
3.如果计算出的密文2!=保存的密文;就说明数据被篡改;阻止后面所有的业务正常执行;
数据库者增加一列作为校验码,通过算法生成:
进行增改查的时候,存入校验码和进行校验,判断数据是否进行了篡改:
如果数据库进行了篡改,数据抛出异常页面: