PHP函數crypt()的功能介紹_PHP教程

來源:互聯網
上載者:User
我們知道在中有實現資料加密的功能,我們今天將為大家介紹的是其中一個可以實現資料加密功能的函數——PHP函數crypt()。 作為PHP函數crypt()的一個例子,考慮這樣一種情況,你希望建立一段PHP指令碼程式限 制對一個目錄的訪問,只允許能夠提供正確的使用者名稱和口令的使用者訪問這一目錄。

我將把資料儲存在我喜歡的資料庫MySQL的一個表中。下面我 們以建立這個被稱作members的表開始我們的例子:

 
  1. mysql>CREATE TABLE members (
  2. ->username CHAR(14) NOT NULL,
  3. ->password CHAR(32) NOT NULL,
  4. ->PRIMARY KEY(username)
  5. ->);

然後,我們假定下面的資料已經儲存在該表中:

使用者名稱 密碼
clark keloD1C377lKE
bruce ba1T7vnz9AWgk
peter paLUvRWsRLZ4U

PHP函數crypt()中的這些加密的口令對應的明碼分別是kent、banner和parker。注意一下每個口令的前二個字母, 這是因為我使用了下面的代碼,根據口令的前二個字母建立幹擾串的:

 
  1. $enteredPassword.
  2. $salt = substr($enteredPassword, 0, 2);
  3. $userPswd = crypt($enteredPassword, $salt);
  4. // $userPswd然後就和使用者名稱一起儲存在MySQL 中

我將使用Apache的口令-應答認證配置提示使用者輸入使用者名稱和口令,一個鮮為人知的有關PHP的資訊是,它可以把Apache 的口令-應答系統輸入的使用者名稱和口令識別為$PHP_AUTH_USER和$PHP_AUTH_PW,我將在身分識別驗證指令碼中用到這二個變數。花一些時間仔細閱讀下 面的指令碼,多注意一下其中的解釋,以便更好地理解下面的代碼:

PHP函數crypt()和Apache的口令-應答驗證系統的應用

 
  1. < ?php
  2. $host = "localhost";
  3. $user = "zorro";
  4. $pswd = "hell odolly";
  5. $db = "users";
  6. // Set authorization to False
  7. $authorization = 0;
  8. // Verify that user has entered
    username and password
  9. if (isset($PHP_AUTH_USER) &&
    isset($PHP_AUTH_PW)) :
  10. mysql_pconnect($host, $user,
    $pswd) or die("Can't connect to MySQL
  11. server!");
  12. mysql_select_db($db) or die
    ("Can't select database!");
  13. // Perform the encryption
  14. $salt = substr($PHP_AUTH_PW, 0, 2);
  15. $encrypted_pswd = crypt($PHP_AUTH_PW, $salt);
  16. // Build the query
  17. $query = "SELECT username FROM members WHERE
  18. username = '$PHP_AUTH_USER' AND
  19. password = '$encrypted_pswd'";
  20. // Execute the query
  21. if (mysql_numrows(mysql_query($query)) == 1) :
  22. $authorization = 1;
  23. endif;
  24. endif;
  25. // confirm authorization
  26. if (! $authorization) :
  27. header('WWW-Authenticate:
    Basic realm="Private"');
  28. header('HTTP/1.0 401 Unauthorized');
  29. print "You are unauthorized
    to enter this area.";
  30. exit;
  31. else :
  32. print "This is the secret data!";
  33. endif;
  34. ?>

上面就是一個核實使用者存取權限的簡單身分識別驗證系統。在使用PHP函數crypt()保護重要的機密資料時,記住在預設狀態下使用的PHP函數crypt()並不是最安全的,只能用在對安全性要求較低的系統中,如果需要較高的安全效能,就需要我在本篇文章的後面介紹的演算法。


http://www.bkjia.com/PHPjc/446265.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/446265.htmlTechArticle我們知道在中有實現資料加密的功能,我們今天將為大家介紹的是其中一個可以實現資料加密功能的函數PHP函數crypt()。 作為PHP函數crypt()的...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.