DES_DECRYPT(crypt_str[,key_str])
使用DES_ENCRYPT()加密一個字元串。若出現錯誤,這個函數會傳回 NULL。
注意,這個函數隻有當MySQL在SSL 的支援下配置完畢時才會運作。請參見5.8.7節,“使用安全連接配接”.
假如沒有給定 key_str 參數, DES_DECRYPT() 會首先檢查加密字元串的第一個位元組, 進而确定用來加密原始字元串的DES密碼關鍵字數字,之後從DES關鍵字檔案中讀取關鍵字進而解密資訊。為使其運作,使用者必須享有 SUPER 特權。可以選擇--des-key-file伺服器指定關鍵字檔案。
假如你向這個函數傳遞一個key_str 參數,該字元串被用作解密資訊的關鍵字。
若 crypt_str 參數看起來不是一個加密字元串, MySQL 會傳回給定的 crypt_str。
DES_ENCRYPT(str[,(key_num|key_str)])
用Triple-DES 算法給出的關鍵字加密字元串。若出現錯誤,這個函數會傳回NULL。
注意,這個函數隻有當MySQL 在SSL的支援下配置完畢後才會運作。請參見5.8.7節,“使用安全連接配接”.
使用的加密關鍵字的選擇基于第二個到 DES_ENCRYPT()的參數,假如給定:
參數
說明
無參數
使用來自DES關鍵字檔案的第一個關鍵字。
key_num
使用DES 關鍵字檔案給出的關鍵字數字(0-9)。
key_str
使用給出的關鍵字字元串為 str 加密。
選擇--des-key-file伺服器指定關鍵字檔案。
傳回字元串是一個二進制字元串,其中第一個字元為 CHAR(128 | key_num)。
加上 128使得識别加密關鍵字更加容易。若你使用一個字元串關鍵字,則 key_num 為127。
結果的字元串長度為 new_len = orig_len + (8-(orig_len % 8))+1。
DES關鍵字檔案中的每一行都具有如下格式:
key_num des_key_str
每個key_num 必須是一個從0到0範圍内的數字。檔案中行的排列順序是任意的。 des_key_str 是用來加密資訊的字元串。在數字和關鍵字之間應該至少有一個空格。若你未指定任何到DES_ENCRYPT()的關鍵字參數,則第一個關鍵字為預設的使用關鍵字。
使用FLUSH DES_KEY_FILE語句,你可以讓 MySQL從關鍵字檔案讀取新的關鍵字值。這要求你享有 RELOAD特權。
擁有一套預設關鍵字的一個好處就是它向應用程式提供了一個檢驗加密列值的方式,而無須向最終使用者提供解密這些值的權力。
mysql> SELECT customer_address FROM customer_table
> WHERE crypted_credit_card = DES_ENCRYPT(‘credit_card_number‘);