保護些數(shù)據(jù)免受黑客或者窺探者獲取令關(guān)注重要問題您既能讓未經(jīng)授權(quán)員使用或者破壞應用程序同要保證您競爭優(yōu)勢幸運MySQL帶設(shè)計用提供種類型安全加密函數(shù)本文概述其些函數(shù)并說明何使用及能夠提供同級別安全雙向加密讓我簡單加密始:雙向加密段數(shù)據(jù)通密鑰加密能夠由知道密鑰解密mysql兩函數(shù)支持種類型加密別叫做ENCODE()DECODE()面簡單實例:mysql INSERT INTO users (username, password) VALUES ('joe', ENCODE('guessme', 'abracadabra'));
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、寧武網(wǎng)站維護、網(wǎng)站推廣。
Query OK, 1 row affected (0.14 sec)其Joe密碼guessme通密鑰abracadabra加密要注意加密完結(jié)二進制字符串所示:mysql SELECT * FROM users WHERE username='joe';
+----------+----------+
| username | password |
+----------+----------+
| joe | 03?i?!? |
+----------+----------+
1 row in set (0.02 sec)abracadabra密鑰于恢復原始字符串至關(guān)重要密鑰必須傳遞給DECODE()函數(shù)獲原始、未加密密碼面使用:mysql SELECT DECODE(password, 'abracadabra') FROM users WHERE username='joe';+---------------------------------+
| DECODE(password, 'abracadabra') |
+---------------------------------+
| guessme |
$query = "SELECT COUNT(*) FROM users WHERE username='$inputUser' AND DECODE(password, 'abracadabra') = '$inputPass'";?提示:雖ENCODE()DECODE()兩函數(shù)能夠滿足數(shù)要求候您希望使用強度更高加密手段
沒有用過mysql加密,但一般都是用服務端語言把數(shù)據(jù)加密后存入數(shù)據(jù)庫中,比如,在PHP里用md5函數(shù)把用戶的密碼加密之后存入數(shù)據(jù)中,一般都 是這么解決的。
1.mysqladmin -uxxx -p password "newpassword";
這個方法win下不好用
2.進入mysql后
set password for '用戶名'@'hostname' identified by 'newpassword';
3.進入mysql后
grant usage on *.* to '用戶名'@'hostname' identified by 'newpassword';
4.修改user表
use mysql;
update user set password=password('newpassword') where user='xxxx';
如果您正在運行使用MySQL的Web應用程序 那么它把密碼或者其他敏感信息保存在應用程序里的機會就很大 保護這些數(shù)據(jù)免受黑客或者窺探者的獲取是一個令人關(guān)注的重要問題 因為您既不能讓未經(jīng)授權(quán)的人員使用或者破壞應用程序 同時還要保證您的競爭優(yōu)勢 幸運的是 MySQL帶有很多設(shè)計用來提供這種類型安全的加密函數(shù) 本文概述了其中的一些函數(shù) 并說明了如何使用它們 以及它們能夠提供的不同級別的安全 雙向加密 就讓我們從最簡單的加密開始 雙向加密 在這里 一段數(shù)據(jù)通過一個密鑰被加密 只能夠由知道這個密鑰的人來解密 MySQL有兩個函數(shù)來支持這種類型的加密 分別叫做ENCODE()和DECODE() 下面是一個簡單的實例
mysql INSERT INTO users (username password) VALUES ( joe ENCODE( gues *** e abracadabra ));Query OK row affected ( sec)
其中 Joe的密碼是gues *** e 它通過密鑰abracadabra被加密 要注意的是 加密完的結(jié)果是一個二進制字符串 如下所示
mysql SELECT * FROM users WHERE username= joe ;+ + +| username | password |+ + +| joe ? ? | ??i??!? |+ + + row in set ( sec)
abracadabra這個密鑰對于恢復到原始的字符串至關(guān)重要 這個密鑰必須被傳遞給DECODE()函數(shù) 以獲得原始的 未加密的密碼 下面就是它的使用方法
mysql SELECT DECODE(password abracadabra ) FROM users WHERE username= joe ;+ +| DECODE(password abracadabra ) |+ +| gues *** e ? ? ? ? ? ? ? ? |+ + row in set ( sec)
應該很容易就看到它在Web應用程序里是如何運行的——在驗證用戶登錄的時候 DECODE()會用網(wǎng)站專用的密鑰解開保存在數(shù)據(jù)庫里的密碼 并和用戶輸入的內(nèi)容進行對比 假設(shè)您把PHP用作自己的腳本語言 那么可以像下面這樣進行查詢
?php$query = SELECT COUNT(*) FROM users WHERE username= $inputUser AND DECODE(password abracadabra ) = $inputPass ;?? 提示 雖然ENCODE()和DECODE()這兩個函數(shù)能夠滿足大多數(shù)的要求 但是有的時候您希望使用強度更高的加密手段 在這種情況下 您可以使用AES_ENCRYPT()和AES_DECRYPT()函數(shù) 它們的工作方式是相同的 但是加密強度更高
單向加密 單向加密與雙向加密不同 一旦數(shù)據(jù)被加密就沒有辦法顛倒這一過程 因此密碼的驗證包括對用戶輸入內(nèi)容的重新加密 并將它與保存的密文進行比對 看是否匹配 一種簡單的單向加密方式是MD 校驗碼 MySQL的MD ()函數(shù)會為您的數(shù)據(jù)創(chuàng)建一個 指紋 并將它保存起來 供驗證測試使用 下面就是如何使用它的一個簡單例子
mysql INSERT INTO users (username password) VALUES ( joe MD ( gues *** e ));Query OK row affected ( sec)mysql SELECT * FROM users WHERE username= joe ;+ + +| username | password ? ? ? ? ? ? ? ? |+ + +| joe ? ? | a e df f c e a |+ + + row in set ( sec)
現(xiàn)在您可以測試用戶輸入的內(nèi)容是否與已經(jīng)保存的密碼匹配 方法是取得用戶輸入密碼的MD 校驗碼 并將它與已經(jīng)保存的密碼進行比對 就像下面這樣
mysql SELECT COUNT(*) FROM users WHERE username= joe AND password=MD ( gues *** e );+ +| COUNT(*) |+ +| ? ? |+ + row in set ( sec)
或者 您考慮一下使用ENCRYPT()函數(shù) 它使用系統(tǒng)底層的crypt()系統(tǒng)調(diào)用來完成加密 這個函數(shù)有兩個參數(shù) 一個是要被加密的字符串 另一個是雙(或者多)字符的 salt 它然后會用salt加密字符串 這個salt然后可以被用來再次加密用戶輸入的內(nèi)容 并將它與先前加密的字符串進行比對 下面一個例子說明了如何使用它
mysql INSERT INTO users (username password) VALUES ( joe ENCRYPT( gues *** e ab ));Query OK row affected ( sec)mysql SELECT * FROM users WHERE username= joe ;+ + +| username | password ? ? |+ + +| joe ? ? | ab/G gtZdMwak |+ + + row in set ( sec)
結(jié)果是
lishixinzhi/Article/program/MySQL/201311/29366
新聞名稱:mysql怎么給語句加密 mysql 數(shù)據(jù)加密
文章位置:http://chinadenli.net/article44/dodchhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、Google、移動網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)