MySQL 加密/壓縮函數(shù)
這些問題可能導致數(shù)據(jù)值的改變。一般而言,上述問題可能在你使用非二進制串數(shù)據(jù)類型(如char,varchar,text等數(shù)據(jù)類型)的情況下發(fā)生。
- AES_ENCRYPT()和AES_DECRYPT()
AES_ENCRYPT()和AES_DECRYPT()可以加密/解密使用官方AES算法的數(shù)據(jù)。該算法使用128位密鑰來編碼,但用戶可以將其擴展到256位。MySQL選用128位密鑰,因為這樣算法實現(xiàn)更快,而且對大多數(shù)用戶而言它也足夠安全了。
AES_ENCRYPT(str,key_str)函數(shù)加密一個字符串并返回一個二進制串。AES_DECRYPT(crypt_str, key_str) 函數(shù)可以解密使用官方AES(Advanced Encryption Standard)算法加密的數(shù)據(jù)并返回原有字符串,輸入變量可以是任意長度。如果輸入變量為NULL,那么該函數(shù)返回結果也為NULL。
因為AES是一個塊級算法,需要使用補白來編碼非偶數(shù)長度的字符串。
- ENCODE()和DECODE()
ENCODE(str, pass_str):該函數(shù)使用pass_str作為密碼來加密字符串str,其加密的結果可以通過DECODE()函數(shù)來解密。該函數(shù)返回的結果是一個同str等長。 DECODE(crypt_str, pass_str):該函數(shù)使用pass_str作為密碼來解密使用ENCODE()加密后的字符串crypt_str。
- DES_ENCRYPT()和DES_ENCRYPT()
DES_ENCRYPT(str[, {key_num|key_str}]):該函數(shù)使用三重DES算法連同給定的密鑰來加密加密字符串。
DES_DECRYPT(crypt_str[, key_str]):該函數(shù)解密一個通過DES_ENCRYPT()加密的字符串,如果出現(xiàn)錯誤,該函數(shù)返回NULL。
- COMPRESS()和UNCOMPRESS()
COMPRESS(string_to_compress):該函數(shù)壓縮一個字符串并且返回一個二進制串。該函數(shù)需要MySQL已連同一個壓縮庫一塊編譯,比如zlib,否則該函數(shù)的返回值總為NULL。壓縮后的字符串可以通過 UNCOMPRESS()函數(shù)來解壓縮。UNCOMPRESS(string_to_uncompress):該函數(shù)解壓縮一個通過COMPRESS() 函數(shù)壓縮的字符串。如果變量不是一個壓縮值,則結果返回為NULL。
- PASSWORD()
PASSWORD(str):該函數(shù)用來加密存儲在user表中 password列的MySQL密碼。PASSWORD()函數(shù)由MySQL服務器中的認證系統(tǒng)使用,用戶不應該在自己的應用中使用該函數(shù)。如果需要使用加密函數(shù),可以考慮使用MD5()或者SHA1()來代替。
其加密結果示例如下:
在MySQL的系統(tǒng)數(shù)據(jù)庫mysql的user表中,有一個名為Password的列,其中保存由password函數(shù)加密后的user的密碼數(shù)據(jù)。如下所示:
- ENCRYPT()
ENCRYPT(str[, salt]):該函數(shù)通過使用Unix crypt()系統(tǒng)調用來加密str,并返回一個二進制串。其中,salt變量應該是一個包含多于兩個字符的字符串。如果salt沒有給定,則使用一個隨機值。如果crypt()系統(tǒng)調用在用戶的操作系統(tǒng)上不可用(Windows操作系統(tǒng)便如此),該函數(shù)返回為NULL。
- MD5()
MD5(str):該函數(shù)計算一個字符串的128位MD5校驗和,返回的結果是由32個十六進制數(shù)字組成的二進制串。如果變量為NULL,則返回為NULL。
其加密結果示例如下:
- SHA1()/SHA():
SHA1(str)/SHA(str)函數(shù)計算字符串str的160位SHA-1校驗和。返回值是一個由40個十六進制數(shù)字組成的二進制串。如果變量為NULL,則返回NULL。
其加密結果示例如下:
相關文章
MySQL中使用replace、regexp進行正則表達式替換的用法分析
這篇文章主要介紹了MySQL中使用replace、regexp進行正則表達式替換的用法,結合具體實例形式分析了replace、regexp正則替換的使用技巧與相關注意事項,需要的朋友可以參考下2017-03-03MySQL千萬數(shù)據(jù)量深分頁優(yōu)化流程(拒絕線上故障)
這篇文章主要為大家介紹了MySQL千萬數(shù)據(jù)量深分頁優(yōu)化拒絕線上故障,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05SQL?Server攜程核心系統(tǒng)無感遷移到MySQL實戰(zhàn)
這篇文章主要介紹了SQL?Server攜程核心系統(tǒng)無感遷移到MySQL實戰(zhàn),文章通過基于數(shù)據(jù)庫部署架構鏡像構建了訂單緩存統(tǒng)一管理熱點數(shù)據(jù),解決各端差異,具體詳情需要的小伙伴可以參考下面文章詳細內容2022-05-05