DES_ENCRYPT() 加密函數

DES_ENCRYPT(str[,(key_num|key_str)])
  • str 傳入的字串
  • key_num|key_str 密碼數字或字串

用Triple-DES 算法給出的關鍵字加密字串。若出現錯誤,這個函數會回傳NULL。
注意,這個函數只有當MySQL在支援SSL的情況下才能運作。

用來加密的金鑰由第二個參數來決定
  • 無參數 使用DES金鑰檔案的第一組金鑰
  • key_num 使用DES金鑰檔案的第 key_num 組金鑰
  • key_str 使用傳入的字串進行加密

金鑰檔案能被伺服器參數--des-key-file所指定。

回傳值的結果是Binary字串,第一個字元是CHAR(128 | key_num)。如果發生錯誤則回傳 NULL。
第一個字母的 128 是為了更容易是別加密金鑰。如果你使用的是 key_str 字串當作金鑰,則 key_num 是127。

回傳的字串長度為
new_len = orig_len + (8-(orig_len % 8))+1。
DES金鑰檔案中,每一行都要符合下面格式:
key_num des_key_str
每個 key_num 必須是一個從0到9範圍內的數字。檔案中行的排列順序可以是隨機的。 des_key_str 是用來加密信息的字串。在數字和金鑰之間應該至少有一個空格。若你未指定任何到DES_ENCRYPT()的金鑰參數,預設使用第一組金鑰為加密金鑰。
可以使用FLUSH DES_KEY_FILE命令,告訴MySQL四幅器更新DES金鑰檔案。你必須有RELOAD的權限。
使用預設金鑰的好處是,給應用程式能夠在不給終端使用者解密的權限的狀況下,檢查加密的資料是否存在。
mysql> SELECT customer_address FROM customer_table
> WHERE crypted_credit_card = DES_ENCRYPT('credit_card_number');

沒有留言: