手動計算密碼的雜湊需要多長時間?
假設一個人沒有電腦(或彩虹表),但可以使用筆和紙以及現代(最佳實踐,未過時)散列算法和數學公式的所有必要文件。
計算密碼的雜湊需要多長時間?
定義密碼
- 一個隨機的 8 個字元的字元串(數字、字母、允許的符號)
定義最佳實踐
- bcrypt(或類似的),計算執行 n=10(總共 1024 次)
如果您想要一種“快速”的方式來確定它需要多長時間
bcrypt-n10
,您可以手動處理其計算的非常非常小的子集,然後將該時間乘以算法將使用它的次數。round函式被多次使用,你可以只執行一次組件來獲得一個基準時間。有對 32 位值的操作,你可以做 1。
鍵設置後有 3072 輪操作(64x16x3)每個擴展鍵有
521 輪操作 每個擴展鍵
有 539 個 32 位 XOR 每個
鍵設置有 2048 個擴展鍵
這為您提供了 1070080 輪運算和 1103872 次 32 位 XOR 一輪包含 2 個 XOR 和 3 個 32 位加法運算以及 4 個 S-Box 查找,您現在可以將其分解為:
3,210,240 次無符號 32 位加法
3,244,032 次 32 位 XOR 操作
4,280,320 次 S-Box 查找(一直在變化)
64 次河豚密鑰調度操作(忽略,可能會增加 3% 的時間)
移動大量數據
如果你速度超級快,可以在 10 秒內完成 XOR,在 20 秒內完成加法,在 10 秒內完成 S-Box 查找,即 4842 天計算每天 8 小時,僅用於這些操作。
您仍然需要考慮需要多少紙張,在滿時從一頁到另一頁傳輸數據,以及所需的額外寫入,以及額外的操作驗證,以確保您不會在某處犯下 1 位錯誤把整個事情搞砸。繼續前進,時間加倍。
即每週工作 7 天工作 26 年或每週工作 5 天工作 37 年。
即使我有一個具有十六進制輸入的電子計算器和一個助手或學徒幫助我擴展 s-box 並驗證我的工作,我也可能需要至少那麼長時間才能做到這一點;我的手指不可能一天做那麼多工作或工作那麼快。
在您需要執行的 3.65 億次左右的操作中,允許的錯誤率為 0。您需要付出多少額外的努力才能確保在幾十年的過程中不會出錯?所以試試看,得到 2 個隨機數,做一個加法和一個 XOR,看看數字是否排成一行……或者是否需要更多時間。