向普通人加密 用PHP程序保護數(shù)據(jù)(5)_PHP教程
推薦:用PHP實現(xiàn)Ftp用戶的在線管理領(lǐng)導要我策劃一個網(wǎng)頁設計大賽和Flash創(chuàng)作大賽,要求必須實現(xiàn)在線報名和上傳作品。通過FreeBSD Apache PHP Mysql FTP我實現(xiàn)了該要求。 實現(xiàn)在線報名和上傳作品的思路是利用網(wǎng)頁表單收集用戶
使用 PHP 進行加密和解密
本文的大部分篇幅討論了使用 crypt() 的單向加密。但是,如果您要將消息發(fā)送給某人,并提供對該消息解密的方法,又該如何辦呢?請使用 PHP 支持的公鑰加密技術(shù)。
使用公鑰加密的用戶擁有一個私鑰和一個公鑰,并且他們與其他用戶共享公鑰。如果您要將一封私有短信發(fā)送給您的朋友 John Doe,您可以使用 John Doe 的公鑰(您已經(jīng)將其存儲在自已的 keyring 中)加密該消息。John Doe 收到該消息后,只有他可以使用他的私鑰對其解密。任何給定用戶的公鑰和私鑰在數(shù)學上是不能相關(guān)的。對于 PGP 和其他公鑰加密方法,不存在從公鑰推斷某人私鑰的方法。
PGP 的附加特性是:私鑰的密碼實際上不是密碼,它是一個密碼短語。它可以是整句話,包括標點符號、空格和所有字符樣式。
使用基于 PGP 的公鑰加密的一種方法是使用 GNU Privacy Guard (GPG)。使用 GPG 加密的任何消息都可以使用 GPG、PGP 或支持任一程序的任何數(shù)量的電子郵件客戶機插件來解密。在示例中,聯(lián)機表接受用戶輸入(包括消息);使用 GPG 為特定的接收方加密消息;然后發(fā)送消息。
清單 8. 使用 GPG
|
以下為引用的內(nèi)容: <?php //cut the message down to size, remove HTML tags $gpg_path = '/usr/local/bin/gpg'; $cmd = "echo $message_body HOME=$home_dir USER=$user_env $gpg_path" . $message_body = `$cmd`; mail($to,'Message from Web Form', $message_body,"From:$from\r\n"); ?> |
在此示例中,PHP 調(diào)用 /usr/local/bin/gpg(此位置因服務器而異),以便使用發(fā)送方的私鑰和接收方的公鑰加密消息。結(jié)果,只有接收方可以解密該消息,并且知道來自發(fā)送方的消息。此外,還可以設置 HOME 和 USER 環(huán)境變量,以通知 GPG 在何處查找存儲這些密鑰的 keyring。其他標志的功能如下:
--quiet 和 --no-secmem-warning 抑制來自 GPG 的警告。
--encrypt 執(zhí)行加密。
--sign 添加簽名,以驗證發(fā)送方的身份。
--armor 產(chǎn)生非二進制的 ASCII 輸出,這樣,易于通過電子郵件將其發(fā)送。
正常情況下,正如前面提到的,機密密鑰受密碼短語的保護。本特定實例沒有使用密碼短語,因為在每次表單提交時它都需要手工輸入。當然,在下列情況下您還可以選擇其他選項:在單獨文件中提供短語,或使用它自已的身份驗證方案防止表單公用(例如,如果它是一個只能由公司銷售代表訪問的表單)。
另請注意,除非您正在對允許用戶輸入電子郵件消息的表使用 SSL,否則鍵入的任何內(nèi)容都是明文形式的。換句話說,客戶機和服務器之間的任何人都可以看見它。不過,這是另一個主題。
結(jié)束語
我們對安全性、加密技術(shù),甚至公鑰加密技術(shù)介紹了很多,目的是幫助您成功開發(fā)下一個 PHP 項目。使用加密和其他加密方法的要點不是創(chuàng)建 100% 可靠的無縫系統(tǒng)。關(guān)閉的計算機才是不可攻擊的系統(tǒng),但是也不能完全保證,因為某人可能會走上前走,打開它,然后攻擊它。加密的要點是使獲取敏感數(shù)據(jù)變得非常困難,以致黑客不再嘗試攻擊,或嘗試攻擊失敗后離去。
所有安全性考慮必須兼顧方便和保護。使用強大的算法密鑰將所有數(shù)據(jù)都進行單向加密意味著您的數(shù)據(jù)非常安全,但是使用時很不方便。這帶來的相應缺陷也很嚴重,如同使用非加密的內(nèi)容一樣,為您帶來的任何方便也為其他人獲取數(shù)據(jù)帶來了可怕的方便。通過加密重要的機密數(shù)據(jù)(如密碼、信用卡號和秘密消息)和添加好的安全措施(如深層防御、過濾用戶提供的數(shù)據(jù)和傳統(tǒng)的一般常識)可以達到最佳平衡。
本文收集整理自互聯(lián)網(wǎng),若您是原文作者,請來信更改作者及出處 Post#vip.qq.com(把#改為@)
分享:用PHP程序?qū)崿F(xiàn)刪除目錄的三種方法實例1。遞規(guī)法: //沒測試 以下為引用的內(nèi)容: deleteDir($dir) { if (rmdir($dir)==false && is_dir($dir)) { if ($dp = opendir($dir)) { w
- 相關(guān)鏈接:
- 教程說明:
PHP教程-向普通人加密 用PHP程序保護數(shù)據(jù)(5)
。