首頁 >後端開發 >php教程 >mysql - php 二進位加密資料如何保證資料唯一性?

mysql - php 二進位加密資料如何保證資料唯一性?

WBOY
WBOY原創
2016-08-30 09:36:441248瀏覽

公司資料庫裡的用戶敏感資料需要加密成二進制密文存在mysql blob類型字段裡,現在發現要保證用戶資料的唯一性不好弄, 因為發現blob類型欄位似乎不能直接進行邏輯​​運算,也不能把表裡的密文全讀出來解密一遍再進行邏輯運算吧

回覆內容:

公司資料庫裡的用戶敏感資料需要加密成二進制密文存在mysql blob類型字段裡,現在發現要保證用戶資料的唯一性不好弄, 因為發現blob類型欄位似乎不能直接進行邏輯​​運算,也不能把表裡的密文全讀出來解密一遍再進行邏輯運算吧

根據用戶id快取密文md5

我覺得應該要這樣做:

  1. 新增資料在加密前對明文進行md5哈希,然後存hash後的值(加密後的blob當然也要存)

  2. 而已有的資料則需要找時間全部解密md5下,然後存放hash後的值

這樣判斷唯一性則直接判斷hash後的值一般就行了。

不建議對密文進行md5 -- 除非你能確保相同的明文加密後總是能產生相同的密文。然而密文至少會受到金鑰的影響,換金鑰後肯定密文會變掉... 況且有些加密方式本身帶有隨機化的初始向量,每次加密出來的密文是不同的。

直接mysql內建方法 hex()

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn