Md5
破解md5的最有效方法?
如果您知道散列的結果,對於本範例,生成的散列為:
ec664d1d65fd8a58c59b337b11c37a4d
而且您還知道雜湊是這樣製作的:
const salt = "asdjbsdhal" const password = unknown; // only thing we don't know const hash = md5(salt + password);
所以我們知道
md5(salt + password) == "ec664d1d65fd8a58c59b337b11c37a4d"
。有沒有比暴力破解更有效的方法來破解這個密碼?我現在正在嘗試的蠻力是這樣的:
const md5 = require("md5"); const expectedHash = "ec664d1d65fd8a58c59b337b11c37a4d"; const salt = "asdjbsdhal"; let nonce = 0; let result = ""; while (result != expectedHash) { nonce++; result = md5(salt + nonce); } console.log("Password: ", nonce);
在 Google 上搜尋雜湊有時會立即給出明文。但是,這只適用於一些常見的雜湊值。
除此之外,沒有比蠻力更有效的方法了。即便如此,您也可以優化蠻力算法以使其更快。Hashcat可以在 GPU 上執行攻擊,從而可以並行執行許多雜湊計算。