Bcrypt算法學習的一些總結

Bcrypt算法理解## 標題

一、介紹:
bcrypt是一個跨平臺的文件加密工具,由它加密的文件可在所有支持的操作系統和處理器上轉移。在目前,很難以破解該算法,因爲需要花費大量的時間,以年爲單位。

二、基本原理:
1、隨機鹽+明文密碼 —經過多次hash算法—生成密文密碼
密文密碼 — 無法通過計算還原出原始密碼(×) — 明文密碼
2、如圖2.1所示:
在這裏插入圖片描述



								圖 2.1 bcrypt流程圖

注:bcrypt算法是單向Hash加密算法,不可逆向破解。

3、bcrypt有四個主要變量:
(1)、saltRounds(工作因子):正整數,跟hash算法散列計算次數有關,數值越高越安全,默認10次。
注:工作因子,是作爲hash算法計算次數的一個關鍵參數,公式爲:
Hash次數 = 1 * (2^(工作因子))
(2)、passwd:明文密碼字符串。
(3)、salt:“鹽”,固定字符 2 a ( 版 本 號 ) + 2a(版本號) + 2a()+saltRounds+$由隨機數匹配的字符。如圖2.2(紅線圈起來的)所示:
在這裏插入圖片描述
圖 2.2 salt格式






(4)、myHash:把passwd和salt進行多次hash算法(次數一般爲2^10),形成我們要的myHash。

注:第一步產生鹽(salt):輸入saltRounds,passwd,打開/dev/urandom設備產生隨機數;固定的字符 (這個2a前後分別有個美元符號) 2 a 2a 2a+$saltRouds… 作爲鹽的前部分,後面部分由產生的隨機數匹配對應字符;將兩部分整合在一起形成鹽。

第二步生成myHash:輸入上面整合鹽(salt),以及passwd,通過hash算法散列,hash的次數由saltRounds確定,多次hash算法後生成muHash字符串。

第三步整合:將鹽(salt)和myHash組合在一起就是最終的密文密碼。

bcrypt密文密碼如圖2.3所示:
在這裏插入圖片描述

                               圖 2.3 bcrypt 密文密碼圖

salt包含:(有一個美元符號)$2a(有一個美元符號) 10 ( 有 一 個 美 元 符 號 ) 10(有一個美元符號) 10()+後面的22個字符。
myhash包含:除了salt的部分。

三、耗時及測試
1、bcrypt算法加密的過程,最耗時的部分就是hash算法多次計算所消耗的時間,這個次數如上面公式所寫,跟你輸入的工作因子數值有關,數值越大——計算次數會以2的次方增加。對於工作因子的值,範圍在4~31之間。
例:工作因子 = 10;次數 = 2^10
工作因子 = 31;次數 = 2^31


2、測試:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章