<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Python `bcrypt`教程 > 原文: [http://zetcode.com/python/bcrypt/](http://zetcode.com/python/bcrypt/) Python `bcrypt`教程展示了如何使用`bcrypt`庫對 Python 中的密碼進行哈希處理。 它定義了基本術語,包括加密,哈希和鹽。 Python `bcrypt`模塊是一個用于在 Python 中生成強哈希值的庫。 它通過`pip install bcrypt`命令安裝。 ## 加密 加密是對消息或信息進行編碼的過程,以使只有授權人員才能使用相應的鍵讀取消息或信息,而未經授權的人員則不能。 預期的信息或消息,稱為純文本,使用加密算法-密碼-加密,生成密文,只有解密后才能讀取。 加密是一種雙向函數。 當我們加密某些東西時,我們這樣做是為了以后對其進行解密。 加密用于傳輸時保護數據; 例如在郵件通訊中。 ## 哈希 哈希是使用算法將任意大小的數據映射到固定長度的過程。 這稱為哈希值。 加密是一種雙向功能,而哈希是一種單向函數。 盡管在技術上可以反向哈希值,但所需的計算能力使其不可行。 加密是為了保護傳輸中的數據,而哈希是為了驗證數據沒有被更改并且是真實的。 > **注意**:哈希不限于安全性。 它還用于比較大量數據或快速鍵查找。 密碼不是以純文本格式存儲在數據庫中,而是以哈希值存儲。 ## 鹽 鹽是固定長度的加密強度強的隨機值,將其添加到哈希函數的輸入中以為每個輸入創建唯一的哈希。 添加鹽可以使密碼哈希輸出唯一,即使對于采用通用密碼的用戶也是如此。 ## `bcrypt`哈希函數 `bcrypt`是 Niels Provos 和 DavidMazières 基于 Blowfish 密碼設計的密碼哈希函數。 `bcrypt`函數是 OpenBSD 的默認密碼哈希算法。 有針對 C,C++ ,C# ,Java,JavaScript,PHP,Python 和其他語言的`bcrypt`實現。 `bcrypt`算法使用強大的加密技術為我們創建哈希并加鹽。 該算法的計算成本是參數化的,因此隨著計算機變得越來越快,它可能會增加。 計算成本被稱為工作因子或成本因子。 它減慢了哈希的速度,使暴力破解的嘗試越來越難。 隨著計算機變得越來越快,最佳成本因數會隨著時間而變化。 高成本因素的缺點是增加了系統資源的負載并影響了用戶體驗。 ## Python `bcrypt`創建哈希密碼 在下一個示例中,我們創建一個哈希密碼。 `create_hashed_password.py` ```py #!/usr/bin/env python3 import bcrypt passwd = b's$cret12' salt = bcrypt.gensalt() hashed = bcrypt.hashpw(passwd, salt) print(salt) print(hashed) ``` 該示例使用`bcrypt`創建一個鹽和一個哈希密碼。 ```py import bcrypt ``` 我們導入`bcrypt`模塊。 ```py salt = bcrypt.gensalt() ``` 用`gensalt()`函數生成鹽。 ```py hashed = bcrypt.hashpw(passwd, salt) ``` 使用`hashpw()`函數創建一個哈希值,該函數將明文值和鹽作為參數。 ```py $ python first.py b'$2b$12$mwSIOyxLJid1jFLgnU0s0.' b'$2b$12$mwSIOyxLJid1jFLgnU0s0.7pmzp8Mtx.GEO30x0AbI2v8r2sb98Cy' $ python first.py b'$2b$12$MgGs11HIXGkg1Bm1Epw0Du' b'$2b$12$MgGs11HIXGkg1Bm1Epw0Du20TV8ppi2Latgq7kKng8UjM5ZFWKKeS' ``` 請注意,鹽是生成的哈希值的第一部分。 還要注意,每次生成唯一的鹽和哈希值。 ## Python `bcrypt`檢查密碼 下面的示例根據哈希值檢查密碼。 `check_passwd.py` ```py #!/usr/bin/env python3 import bcrypt passwd = b's$cret12' salt = bcrypt.gensalt() hashed = bcrypt.hashpw(passwd, salt) if bcrypt.checkpw(passwd, hashed): print("match") else: print("does not match") ``` 使用`checkpw()`函數檢查密碼。 ```py $ python check_passwd.py match ``` 這是輸出。 ## Python `bcrypt`成本因子 成本因子通過減慢哈希來提高安全性。 `cost_factor.py` ```py #!/usr/bin/env python3 import bcrypt import time passwd = b's$cret12' start = time.time() salt = bcrypt.gensalt(rounds=16) hashed = bcrypt.hashpw(passwd, salt) end = time.time() print(end - start) print(hashed) ``` 我們使用`rounds`參數將成本因子設置為 16。 我們測量生成密碼哈希的時間。 ```py $ cost_factor.py 4.268407821655273 b'$2b$16$.1FczuSNl2iXHmLojhwBZO9vCfA5HIqrONkefhvn2qLQpth3r7Jwe' ``` 花費超過四秒鐘的時間來生成具有指定成本因子的哈希值。 在本教程中,我們使用了 Python `bcrypt`模塊來生成密碼哈希。 您可能也對以下相關教程感興趣: [Python 教程](/lang/python/), [Python 列表推導](/articles/pythonlistcomprehensions/)或[所有 Python 教程](/all/#python)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看