一、敏感數據加密
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!=保存的密文;就說明數據被篡改;阻止後面所有的業務正常執行;
數據庫者增加一列作爲校驗碼,通過算法生成:
進行增改查的時候,存入校驗碼和進行校驗,判斷數據是否進行了篡改:
如果數據庫進行了篡改,數據拋出異常頁面: