向普通人加密 用PHP程序保護(hù)數(shù)據(jù)(3)_PHP教程
推薦:用PHP實(shí)現(xiàn)Ftp用戶的在線管理領(lǐng)導(dǎo)要我策劃一個網(wǎng)頁設(shè)計大賽和Flash創(chuàng)作大賽,要求必須實(shí)現(xiàn)在線報名和上傳作品。通過FreeBSD Apache PHP Mysql FTP我實(shí)現(xiàn)了該要求。 實(shí)現(xiàn)在線報名和上傳作品的思路是利用網(wǎng)頁表單收集用戶
在這一過程結(jié)束時,數(shù)據(jù)庫中仍有一個明文密碼。您不能顯示它。最容易的修復(fù)方法是使用 PHP 的內(nèi)置 crypt() 功能。
使用 crypt()
PHP 的內(nèi)置 crypt() 功能可實(shí)現(xiàn)單向加密 或單向散列。它只所以是單向的,是因?yàn)樵趯δ硟?nèi)容進(jìn)行加密后,您永遠(yuǎn)不能將其反轉(zhuǎn)為明文。乍一看,此想法似乎很荒謬。使用加密主要是保護(hù)信息,隨后能夠使用該信息,后者通常意味著能夠?qū)λM(jìn)行解密。
不要絕望。單向加密方案和 crypt() 特別受歡迎�?梢允贡Wo(hù)信息的方法更安全。如果您的用戶密碼列表落入不法之徒之手,他們實(shí)際上沒有將密碼解密為明文的方法。
讓我們返回到密碼示例。注釋 (notational) PHP 應(yīng)用程序可能包括讓系統(tǒng)管理員創(chuàng)建、編輯和刪除用戶的模塊。例如,在將用戶記錄存儲到用戶表之前,PHP 腳本可以使用 crypt() 對密碼加密。
清單 4. 使用 crypt() 加密密碼
| 以下為引用的內(nèi)容: <?php $cleanpw = crypt($pw); $sql = "insert into users (username,password) |
crypt() 將一串明文作為它的第一個參數(shù)字,對它應(yīng)用 salt 會影響加密算法的隨機(jī)性,并生成輸入明文的單向暗文。如果不提供 salt,則 PHP 通常默認(rèn)其系統(tǒng) salt,它可以是以下值和長度之一:
算法 Salt
| 以下為引用的內(nèi)容: CRYPT_STD_DES 2 個字符(默認(rèn)) CRYPT_EXT_DES 9 個字符 CRYPT_MD5 12 個字符,以 $1$開頭 CRYPT_BLOWFISH 16 個字符,以 $2$開頭 |
許多現(xiàn)代 PHP 安裝使用 MD5 或更高的 salt,它們使用強(qiáng)大的 12 個字符的 salt,但是,不要對任何事情想當(dāng)然。您最好知道系統(tǒng)正在使用哪一個值。您可以使用以下 PHP 代碼片段檢查服務(wù)器的設(shè)置:
| 以下為引用的內(nèi)容: <?php echo "System salt size: ". CRYPT_SALT_LENGTH; ?> |
返回的答案將是 2、9、12 或 16,它告訴您系統(tǒng)正在使用的值。要使用 MD5 或更高版本的 salt,您可以顯式調(diào)用明文和 salt 參數(shù)中的 crypt() 函數(shù)以及 md5() 函數(shù),以獲取隨機(jī)暗文(參見清單 5)。md5() 函數(shù)可以散列反饋的任何字符串,并將其轉(zhuǎn)變?yōu)楣潭ㄩL度為 32 個字符的字符串。您可能更喜歡其他方法,具體的使用取決于安全需求和個人愛好。
清單 5. 使用 crypt() 和 md5() 加密密碼
| 以下為引用的內(nèi)容: <?php $cleanpw = crypt(md5($pw),md5($user)); $sql = "insert into users (username,password) |
現(xiàn)在數(shù)據(jù)庫中已經(jīng)擁有一個已加密的密碼,但是沒有對其進(jìn)行解密的方法。如何使之有用?一個比較容易的方法是:對用戶提供的任何傳入密碼都使用相同的加密方法,并將結(jié)果與您存儲的密碼比較。
分享:用PHP程序?qū)崿F(xiàn)刪除目錄的三種方法實(shí)例1。遞規(guī)法: //沒測試 以下為引用的內(nèi)容: deleteDir($dir) { if (rmdir($dir)==false && is_dir($dir)) { if ($dp = opendir($dir)) { w
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時間
- PHP中獎概率的抽獎算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-向普通人加密 用PHP程序保護(hù)數(shù)據(jù)(3)
。