mysql加密存储敏感数据
? ? 項目中涉及到用戶敏感信息,比如手機號、身份證號碼等,應該以密文形式存儲在數據庫中,本文例子演示如何利用mysql的加解密函數對數據進行加密存儲、解密讀取、以及過濾查詢。
? 下面以在表"test"中將身份證信息寫入"idcard"字段、以及從"idcard"字段讀取數據、以及以"idcard"為過濾條件進行過濾查詢為例子;假設加密秘鑰為"my_secret_key"
一)加密存儲數據:'452528199909091234',秘鑰為:'my_secret_key'
INSERT INTO test (idcard) VALUES (HEX(AES_ENCRYPT('452528199909091234','my_secret_key')))?
二)讀取并解密數據返回
1.讀取并解密數據,數據全部返回。
SELECT id,AES_DECRYPT(UNHEX(idcard),'my_secret_key') AS idcard FROM test
2.讀取并解密數據,只返回最左邊6個字符
SELECT id,LEFT(AES_DECRYPT(UNHEX(idcard),'my_secret_key'),6) AS idcard FROM test
3.讀取并解密數據,只返回最左邊6個字符,補充前綴'******',讀出來的結果為
SELECT id,CONCAT('******',LEFT(AES_DECRYPT(UNHEX(idcard),'my_secret_key'),6)) AS idcard FROM test
三)過濾查詢
1.按照密文比較方式(要比較的數據先加密,加密后的數據和數據庫里存的密文比較)
SELECT id,AES_DECRYPT(UNHEX(idcard),'my_secret_key') AS idcard FROM test ?WHERE idcard=HEX(AES_ENCRYPT('452528199909091234','my_secret_key'))
2.按照明文比較方式(將數據庫存的密文解密出明文,然后和要比較的數據進行比較)
SELECT id,AES_DECRYPT(UNHEX(idcard),'my_secret_key') AS idcard FROM test ?WHERE AES_DECRYPT(UNHEX(idcard),'my_secret_key')='452528199909091234'
總結
以上是生活随笔為你收集整理的mysql加密存储敏感数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 揭密迅雷BT式下载本质 [揭密迅雷]
- 下一篇: 计算机专业竞聘词150,计算机专业组长竞