<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之旅 廣告
                ### 存儲密碼 **簡單而言,存儲bcrypt, scrypt等算法輸出的內容,不要用salted hash的方式存儲密碼,不要用加密的方式存儲密碼,當然,更不要明文存儲。** 任何情況下盡可能的不要使用md5算法,而使用SHA系列的哈希算法。因為md5算法在很多地方被證明是很容易沖突的【2】,另外md5的性能優勢也完全可以忽略不計。 **為什么不能加密存儲?** 加密存儲的方式其實和明文存儲沒有區別。密碼加密后一定能被解密獲得原始密碼,因此,該網站一旦數據庫泄露,所有用戶的密碼本身就大白于天下。另外,管理員也存在獲取原始密碼,利用同樣的帳號登陸其他互聯網服務的可能。 **為什么不能用Hash存儲?** 單向Hash算法(MD5, SHA1, SHA256等)可以保證管理員幾乎不能恢復原始密碼。但它有兩個特點: 1. 從同一個密碼進行單向哈希,得到的總是唯一確定的摘要 2. 計算速度快。隨著技術進步,尤其是顯卡在高性能計算中的普及,一秒鐘能夠完成數十億次單向哈希計算 結合上面兩個特點,考慮到多數人所使用的密碼為常見的組合,攻擊者可以將所有密碼的常見組合進行單向哈希,得到一個摘要組合, 然后與數據庫中的摘要進行比對即可獲得對應的密碼。這個摘要組合也被稱為rainbow table【3】。 更糟糕的是,一個攻擊者只要建立上述的rainbow table,可以匹配所有的密碼數據庫。 **為什么不能用Salt + Hash的方式存儲?** 將明文密碼混入“隨機因素“,然后進行單向哈希后存儲,也就是所謂的”Salted Hash”。 這個方式相比上面的方案,最大的好處是針對每一個數據庫中的密碼,都需要建立一個完整的rainbow table進行匹配。 因為兩個同樣使用“passwordhunter”作為密碼的賬戶,在數據庫中存儲的摘要完全不同。 10多年以前,因為計算和內存大小的限制,這個方案還是足夠安全的,因為攻擊者沒有足夠的資源建立這么多的rainbow table。 但是,在今日,因為顯卡的恐怖的并行計算能力,這種攻擊已經完全可行。 **為什么bcrypt, scrypt等算法能保證密碼存儲的安全性?** 這類算法有一個特點,算法中都有個因子,用于指明計算密碼摘要所需要的資源和時間,也就是計算強度。計算強度越大,攻擊者建立rainbow table越困難,以至于不可繼續。 也就是說,故意延長一個密碼匹配的計算時間,如果一個密碼匹配需要1秒鐘,那么匹配1000萬個密碼組合就需要115天,這個開銷就非常大。 另外,這類算法也可以保證即使計算能力不斷提高,只要調整算法中的強度因子,密碼仍然不可能被輕易的攻破,同時不影響已有用戶的登陸。關于這些算法的具體優劣,請參考【1】 【1】 [http://blog.jianguoyun.com/?p=438](//link.zhihu.com/?target=http%3A//blog.jianguoyun.com/%3Fp%3D438) 【2】 [http://marc-stevens.nl/research/md5-1block-collision/](//link.zhihu.com/?target=http%3A//marc-stevens.nl/research/md5-1block-collision/) 【3】 [http://en.wikipedia.org/wiki/Rainbow\_table](//link.zhihu.com/?target=http%3A//en.wikipedia.org/wiki/Rainbow_table)
                  <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>

                              哎呀哎呀视频在线观看