a) 函數(shù) AES_ENCRYPT(str ,key_str ) , AES_DECRYPT(crypt_str ,key_str )
公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出旅順口免費(fèi)做網(wǎng)站回饋大家。
函數(shù)使用說(shuō)明:這些函數(shù)允許使用官方 AES 進(jìn)行加密和數(shù)據(jù)加密 ( 高級(jí)加密標(biāo)準(zhǔn) ) 算法 , 即以前人們所熟知的 “Rijndael” 。 保密關(guān)鍵字的長(zhǎng)度為 128 比特,不過(guò)你可以通過(guò)改變?cè)炊鴮⑵溲娱L(zhǎng)到 256 比特。我們選擇了 128 比特的原因是它的速度要快得多,且對(duì)于大多數(shù)用途而言這個(gè)保密程度已經(jīng)夠用。
b) 函數(shù)DECODE(crypt_str ,pass_str )
函數(shù)使用說(shuō)明:使用 pass_str 作為密碼,解密加密字符串 crypt_str , crypt_str 應(yīng)該是由 ENCODE() 返回的字符串。
c) 函數(shù) ENCODE(str ,pass_str )
函數(shù)使用說(shuō)明:使用 pass_str 作為密碼,解密 str 。 使用 DECODE() 解密結(jié)果。
d) 函數(shù) DES_DECRYPT(crypt_str [,key_str ])
函數(shù)使用說(shuō)明:使用 DES_ENCRYPT() 加密一個(gè)字符串。若出現(xiàn)錯(cuò)誤,這個(gè)函數(shù)會(huì)返回 NULL 。
e) 函數(shù) DES_ENCRYPT(str [,(key_num |key_str )])
函數(shù)使用說(shuō)明:用 Triple-DES 算法給出的關(guān)鍵字加密字符串。若出現(xiàn)錯(cuò)誤,這個(gè)函數(shù)會(huì)返回 NULL 。
f) 函數(shù) ENCRYPT(str [,salt ])
函數(shù)使用說(shuō)明:使用 Unix crypt() 系統(tǒng)調(diào)用加密 str 。 salt 參數(shù)應(yīng)為一個(gè)至少包含 2 個(gè)字符的字符串。若沒(méi)有給出 salt 參數(shù),則使用任意值。
g) 函數(shù) MD5(str )
函數(shù)使用說(shuō)明:為字符串算出一個(gè) MD5 128 比特檢查和。該值以 32 位十六進(jìn)制數(shù)字的二進(jìn)制字符串的形式返回 , 若參數(shù)為 NULL 則會(huì)返回 NULL 。例如,返回值可被用作散列關(guān)鍵字
h) 函數(shù) OLD_PASSWORD(str )
函數(shù)使用說(shuō)明:當(dāng) PASSWORD() 的執(zhí)行變?yōu)楦纳瓢踩詴r(shí), OLD_PASSWORD() 會(huì)被添加到 MySQL 。 OLD_PASSWORD() 返回從前的 PASSWORD() 執(zhí)行值 ( 4.1 之前 ) ,同時(shí)允許你為任何 4.1 之前的需要連接到你的 5.1 版本 MySQL 服務(wù)器前客戶端設(shè)置密碼,從而不至于將它們切斷
i) 函數(shù)PASSWORD(str )
函數(shù)使用說(shuō)明:從原文密碼str 計(jì)算并返回密碼字符串,當(dāng)參數(shù)為 NULL 時(shí)返回 NULL 。這個(gè)函數(shù)用于用戶授權(quán)表的Password 列中的加密MySQL 密碼存儲(chǔ)
使用mysql的加密函數(shù)運(yùn)行:
select HEX(AES_ENCRYPT( 'test aes encrypt','123')) as aesTest
輸出密文:
17CDAE577C715A0B5A922BF07462622AF15884B6D0F596B0241DC8F966C4A93F
官方文檔解釋:
The block_encryption_mode system variable controls the mode for block-based encryption algorithms. Its default value is font color="red" aes-128-ecb /font, which signifies encryption using a key length of 128 bits and ECB mode. For a description of the permitted values of this variable, see Section 5.1.8, “Server System Variables” .
在線加密驗(yàn)證 :
該網(wǎng)加密結(jié)果為:
17cdae577c715a0b5a922bf07462622af15884b6d0f596b0241dc8f966c4a93f
與mysql加密結(jié)果一致,只是大小寫差異。
原因:mysql8 之前的版本中加密規(guī)則是mysql_native_password,而在mysql8之后,加密規(guī)則改為caching_sha2_password
解決辦法:
1、升級(jí)客戶端
2、把mysql用戶登錄密碼加密規(guī)則還原成mysql_native_password:
ALTER USER xxxx IDENTIFIED WITH mysql_native_password BY '新密碼';
沒(méi)有用過(guò)mysql加密,但一般都是用服務(wù)端語(yǔ)言把數(shù)據(jù)加密后存入數(shù)據(jù)庫(kù)中,比如,在PHP里用md5函數(shù)把用戶的密碼加密之后存入數(shù)據(jù)中,一般都 是這么解決的。
MySQL數(shù)據(jù)庫(kù)的認(rèn)證密碼有兩種方式,
MySQL 4.1版本之前是MySQL323加密,MySQL 4.1和之后的版本都是MySQLSHA1加密,
MySQL數(shù)據(jù)庫(kù)中自帶Old_Password(str)和Password(str)函數(shù),它們均可以在MySQL數(shù)據(jù)庫(kù)里進(jìn)行查詢,前者是MySQL323加密,后者是MySQLSHA1方式加密。
(1)以MySQL323方式加密
select??old_password('111111');
(2)以MySQLSHA1方式加密
select password('111111');
MYSQL323加密中生成的是16位字符串,而在MySQLSHA1中生存的是41位字符串,其中*是不加入實(shí)際的密碼運(yùn)算中,通過(guò)觀察在很多用戶中都攜帶了"*",在實(shí)際破解過(guò)程中去掉"*",也就是說(shuō)MySQLSHA1加密的密碼的實(shí)際位數(shù)是40位。