用Perl來管理Apache驗證身份時所用的密碼(轉)
用Perl來管理Apache驗證身份時所用的密碼(轉)[@more@]本文介紹如何用Perl來管理Apache驗證身份時所用的密碼,包括如何加密密碼,如何修改文字檔案、DBM資料庫、MySQL資料庫中的使用者記錄,等等。一、加密密碼(3月26日) 前面三篇文章討論了在Apache上實現身份驗證的各種方法,即如何在使用者訪問某些受保護的資源時顯示一個要求輸入名字和密碼的對話方塊。手工管理密碼往往是非常麻煩的,這裡要介紹的就是一些透過Perl自動維護密碼列表的方法。 注意:本文假定你已經具備一些Perl的基礎知識。如果你還沒有聽說過Perl,下面是一個簡單的介紹:Perl是一種程式語言。它是一種非常流行的程式語言,在文字處理、埠通訊、協調多個不同應用以及完成其他諸多工時都受到人們的歡迎。Perl同時也是一種頗有名氣的流行CGI程式語言,不過這只是Perl諸多應用中的一種。 在使用者和密碼的管理中,掌握加密密碼的方法是非常必要和有用的。Perl提供了一個內建的函式來完成這一任務,這個函式就是crypt。要使用這個函式,你必須先搞清楚下面這些問題。 首先,正如以前的一篇文章所提到的,Apache以“Unix crypt”格式儲存密碼,用Perl的crypt函式加密字串得到的也是這種格式。為加密字串,我們需要一個稱為“salt”的字串,它是兩個(或者兩個以上)字元構成的字串,用於啟動加密過程。salt一般是隨機生成的,根據所選salt的不同加密字串之後得到的結果也不同。 在Perl程式中呼叫crypt函式的形式如下所示: $encrypted = crypt ($password, $salt); 上例假定$password已經由使用者透過某種方式提供,$salt已經透過某種方式生成。請參見下面的更多說明。 crypt是一種不可逆的加密演算法,也就是說,一旦我們加密了一個字串就沒有辦法把它還原得到原來的字串。這意味著,要知道使用者輸入的密碼是否和正確的密碼一樣,唯一的方法是把使用者輸入的密碼也加密,看看加密結果是否和正確密碼的加密結果一樣。當然,兩次加密所用的salt應該一樣。 crypt函式把加密所用的salt作為加密結果的前兩個字元保留,所以我們可以用如下程式碼驗證使用者輸入的密碼是否正確: $guess_encrypted = crypt ($guess, $encrypted);if ($guess_encrypted eq $encrypted) {print "密碼正確.
";}else {print "密碼錯誤.
";} 當我們為salt指定一個具體的字串時,Perl知道且只使用該字串的前面兩個字元: 順便說一下,如果要自己生成salt,我們可以使用下面的程式碼: @a=(0..9,&single;a&single;..&single;z&single;);$pass = join &single;&single;, map { $a[int rand @a] } (0..1); 這段程式碼生成了一個由兩個字元構成的字串,字元可能是字母也可能是數字。當然,和Perl中的其他許多事情一樣,我們還可以使用其他各種方法生成salt
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-937365/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- swift 郵箱、密碼、手機號、身份證驗證正則Swift密碼
- PHP 驗證身份證號碼PHP
- app直播原始碼,登入時輸入驗證碼、簡訊驗證身份APP原始碼
- 實時驗證碼技術可改進生物識別身份驗證
- 無密碼身份認證,跟密碼說再見!密碼
- 1.6.5.1. 準備使用密碼檔案進行身份驗證密碼
- 無密碼身份驗證如何保障使用者隱私安全?密碼
- 直播app原始碼,進行身份驗證時,檢測身份證位數夠不夠APP原始碼
- 密碼安全和無密碼身份認證那些事兒密碼
- javascript身份證號碼校驗JavaScript
- C++身份核驗介面程式碼、身份證OCR、身份證實名認證APIC++API
- asp.core 同時相容JWT身份驗證和Cookies 身份驗證兩種模式JWTCookie模式
- ACCESS 密碼驗證/文字驗證中的小坑密碼
- 身份認證的盡頭竟然是無密碼 ?密碼
- ORACLE 11g的密碼錯誤延時驗證Oracle密碼
- 新!Web身份驗證新標,支援免密登陸Web
- 身份證驗證工具類
- 1.6.3. 資料庫管理員身份驗證方法資料庫
- 【PTA】查驗身份證
- C++身份證號驗證C++
- 完成ssh無密碼的驗證,採用公鑰、私鑰密碼
- Spring Boot中的Firebase身份驗證+Firestore整合原始碼Spring BootREST原始碼
- 網站漏洞檢測 身份驗證碼與重要操作驗證碼安全問題網站
- PostgreSQL版的身份證號碼15位轉18位SQL
- 影片直播app原始碼,姓名,身份證input驗證過濾APP原始碼
- 【驗證碼識別專欄】今天不煉丹,用 cv 來秒驗證碼
- 使用Docker部署帶密碼驗證的RedisDocker密碼Redis
- 無密碼驗證:客戶端密碼客戶端
- js正則驗證身份證號JS
- python - 驗證身份證合法性Python
- 中國身份證號驗證庫
- 使用 JWT 身份驗證保護你的 Spring Boot 應用JWTSpring Boot
- 客戶端身份驗證客戶端
- 舊香港身份證校驗
- kafka SASL/PLAIN 身份驗證KafkaAI
- 身份證號碼的正規表示式及驗證詳解(JavaScript,Regex)JavaScript
- Linux中為SSH啟用雙因素身份驗證Linux
- perl分析apache日誌Apache
- perl在apache上部署Apache