溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

深度解析:MySQL加密解密

發(fā)布時間:2020-08-03 06:31:04 來源:網(wǎng)絡(luò) 閱讀:727 作者:沙漏半杯 欄目:編程語言

MySQL 數(shù)據(jù)庫內(nèi)部有多種 加密函數(shù) 解密函數(shù)


被加密的字段的類型需要是 VARBINARY、BLOB 類型 存儲


AES_ENCRYPT(str,key) : 返回用密鑰key對字符串str利用高級加密標(biāo)準(zhǔn)算法加密后的結(jié)果,調(diào)用AES_ENCRYPT的結(jié)果是一個二進(jìn)制字符串

AES_DECRYPT(str,key) : 返回用密鑰key對字符串str利用高級加密標(biāo)準(zhǔn)算法解密后的結(jié)果

mysql> CREATE TABLE userdata(username VARCHAR(20),pwssword VARCHAR(50),encryptedpassword VARBINARY(100));

mysql> INSERT INTO userdata(username,pwssword,encryptedpassword) VALUES('smith','abdABC123',AES_ENCRYPT('abdABC123','key'));

mysql> SELECT * FROM userdata;

+----------+-----------+-------------------+

| username | pwssword? | encryptedpassword |

+----------+-----------+-------------------+

| smith? ? | abdABC123 | .|

+----------+-----------+-------------------+

1 row in set (0.01 sec)

mysql> SELECT username,pwssword,AES_DECRYPT(encryptedpassword,'key') FROM userdata;

+----------+-----------+--------------------------------------+

| username | pwssword? | AES_DECRYPT(encryptedpassword,'key') |

+----------+-----------+--------------------------------------+

| smith? ? | abdABC123 | abdABC123? ? ? ? ? ? ? ? ? ? ? ? ? ? |

+----------+-----------+--------------------------------------+

1 row in set (0.00 sec)


MD5(str) : MD5方式對 str 加密

mysql> SELECT MD5('abcABC123');

+----------------------------------+

| MD5('abcABC123')? ? ? ? ? ? ? ? ?|

+----------------------------------+

| 480aeb42d7b1e3937fe8db12a1ffe6d8 |

+----------------------------------+

1 row in set (0.00 sec)


SHA(str) : SHA方式對 str 加密

mysql> SELECT SHA('abcABC123');

+------------------------------------------+

| SHA('abcABC123')? ? ? ? ? ? ? ? ? ? ? ? ?|

+------------------------------------------+

| 0a6807c0856b137fb44ce239587e4f34e011b005 |

+------------------------------------------+

1 row in set (0.00 sec)


SHA1(str) : SHA1方式對 str 加密

mysql> SELECT SHA1('abcABC123');

+------------------------------------------+

| SHA1('abcABC123')? ? ? ? ? ? ? ? ? ? ? ? |

+------------------------------------------+

| 0a6807c0856b137fb44ce239587e4f34e011b005 |

+------------------------------------------+

1 row in set (0.00 sec)


ENCODE(str,key) : 使用字符串 key 作為秘鑰來加密字符串str,加密結(jié)果是二進(jìn)制數(shù)

DECODE(str,key) : 使用字符串 key 作為秘鑰來解密字符串str

mysql> INSERT INTO userdata(username,pwssword,encryptedpassword) VALUES('KT','abdABC123',ENCODE('abdABC123','key'));

mysql> SELECT * FROM userdata WHERE username='KT';

+----------+-----------+-------------------+

| username | pwssword? | encryptedpassword |

+----------+-----------+-------------------+

| KT? ? ? ?| abdABC123 | 1? ? ? ?|

+----------+-----------+-------------------+

1 row in set (0.00 sec)

mysql> SELECT username,pwssword,DECODE(encryptedpassword,'key') FROM userdata WHERE username='KT';

+----------+-----------+---------------------------------+

| username | pwssword? | DECODE(encryptedpassword,'key') |

+----------+-----------+---------------------------------+

| KT? ? ? ?| abdABC123 | abdABC123? ? ? ? ? ? ? ? ? ? ? ?|

+----------+-----------+---------------------------------+

1 row in set, 1 warning (0.00 sec)


ENCRYPT(str,salt) : 使用UNIXcrypt()函數(shù),用關(guān)鍵詞salt(一個可以惟一確定口令的字符串,就像鑰匙一樣)加密字符串str

mysql> SELECT ENCRYPT('abdABC123','key');

+----------------------------+

| ENCRYPT('abdABC123','key') |

+----------------------------+

| kezazmcIo.aCw? ? ? ? ? ? ? |

+----------------------------+

1 row in set, 1 warning (0.00 sec)


PASSWORD(str) : 返回字符串str的加密版本,這個加密過程是不可逆轉(zhuǎn)的,和UNIX密碼加密過程使用不同的算法

mysql> INSERT INTO userdata(username,pwssword,encryptedpassword) VALUES('Tom','abdABC123',PASSWORD('abdABC123'));

mysql> SELECT * FROM userdata WHERE username='Tom';

+----------+-----------+-------------------------------------------+

| username | pwssword? | encryptedpassword? ? ? ? ? ? ? ? ? ? ? ? ?|

+----------+-----------+-------------------------------------------+

| Tom? ? ? | abdABC123 | *6970C4ACB558CFFCAD8DE8DA17CDD40CFC023FDA |

+----------+-----------+-------------------------------------------+

1 row in set (0.00 sec)


mysql> SELECT PASSWORD('abcde');

+-------------------------------------------+

| PASSWORD('abcde')? ? ? ? ? ? ? ? ? ? ? ? ?|

+-------------------------------------------+

| *8DC54F2E15823C98AEA063E339A5D4C53D1A471A |

+-------------------------------------------+

1 row in set, 1 warning (0.00 sec)


---------------------?



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI