公司資料庫裡的用戶敏感資料需要加密成二進制密文存在mysql blob類型字段裡,現在發現要保證用戶資料的唯一性不好弄, 因為發現blob類型欄位似乎不能直接進行邏輯運算,也不能把表裡的密文全讀出來解密一遍再進行邏輯運算吧
公司資料庫裡的用戶敏感資料需要加密成二進制密文存在mysql blob類型字段裡,現在發現要保證用戶資料的唯一性不好弄, 因為發現blob類型欄位似乎不能直接進行邏輯運算,也不能把表裡的密文全讀出來解密一遍再進行邏輯運算吧
根據用戶id快取密文md5
我覺得應該要這樣做:
新增資料在加密前對明文進行md5哈希,然後存hash後的值(加密後的blob當然也要存)
而已有的資料則需要找時間全部解密md5下,然後存放hash後的值
這樣判斷唯一性則直接判斷hash後的值一般就行了。
不建議對密文進行md5 -- 除非你能確保相同的明文加密後總是能產生相同的密文。然而密文至少會受到金鑰的影響,換金鑰後肯定密文會變掉... 況且有些加密方式本身帶有隨機化的初始向量,每次加密出來的密文是不同的。
直接mysql內建方法 hex()