2016-01-24 77 views
0

根據此代碼的不同結果知道$server_seed值是否可行?sha256基於不同的結果

$server_seed = "**4799e37e2f397e6196813367a11042335521f8d2**"; (unknown value) 

$round_id = 73904; (known value); 

$round_date = "2016-01-23-11-59-37"; (known value) 

$hash = hash("sha256", $server_seed . "-" . $round_id . "-" . $round_date); 

$roll = bcmod(hexdec(substr($hash, 0, 8)), 15); 

echo $roll; 

的代碼給出了介乎每次$round_id增加1並$round_date增加45秒時間和的值。我可以獲得大量不同的結果,我知道他們的$round_id$round_date,但$server_seed是未知的(總是相同的長度)。

我的問題是,是否有辦法通過不同的結果知道$server_seed的值,比如製作一個代碼來檢查不同的值,並告訴你什麼值會給你插入的結果。

有沒有辦法以簡單方式獲得$server_seed值?

+0

有幾個加密函數已經得到很好的證明,如'HMAC','PBKDF2'和'crypt'。使用經過良好審查的密碼功能總是比編寫自己的密碼功能更可取。 [「Schneier法則」](https://www.schneier.com/blog/archives/2011/04/schneiers_law.html):從最無知的業餘愛好者到最好的密碼學家,任何人都可以創建一種算法,他自己可以不會中斷。 – zaph

回答

0

沒有簡單的方法。字典或蠻力。

1

沒有簡單的方法。 Sha256是加密散列函數,完全滿足這樣的功能的definition

密碼散列函數是這被認爲是 實際上不可能以反轉的哈希函數。

目前還沒有成功的攻擊已經被報道SHA-2

至於對方的回答指出,只有蠻力攻擊是可能的,是不可行的,在現有的計算技術和硬件的當前狀態來執行。