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');