算講得幾清楚
起碼一個有數理背景既人都應該睇得明
但想知hash function係公開既?
如果係公開既話, 係咩原因令佢咁難reverse搵番input?
係公開既
你上wiki都搵得到條式
點解咁難...
我唔係好識解SHA256點解咁難,不過都試下㗕啦
bitwise operation reverse可以有好多個結果
例如我話A同B都係1-bit
A or B = 1, 咁A同B=?
呢度已經有三個possibilities
照道理只要我sub番落條式度試下就得
但係SHA256入面有十九幾萬個steps
其中一D steps例如bit shift係會造成information loss
例如00010111 left shift 變成00101110, 最左果個bit既你係估唔番
每一round都會做同樣既bitwise operation
每一round都少左D information
所以行左64 rounds之後已經無曬原本既information
所以而家學術界研究破解方法既時候
係嘗試破解低round數既SHA256先
例如而家已經有人搵到28 round SHA256 快過brute-force而且現實上可行既破解方法
用bitwise operation黎解釋可能有D難明
下面呢個例子同SHA256無乜關係,但係同好多其他cryptographic function (例如RSA public key cryptography)有關,就係integer factorization
比一個數你
3571082522473766674484304975778527401895200115726120795842576355509746402614775567 (10進制)
要你做factorization
簡單到連小學生都識做既數 偏偏就係最難解決
答案係
170,141,183,460,469,231,731,687,303,715,884,105,727
同
20,988,936,657,440,586,486,151,264,256,610,222,593,863,921
兩個都係超級大既質數
但係如果掉番轉,我比兩個好大既質數你,要你乘出黎
好快就做完
呢類semiprime factorization係數學界入面都未搵到有咩快方法做得到
注意:係未搵到有咩快方法
by nature呢D數學問題就係咁難解決
btw 數學家都未証明到快方法唔存在,所以各位爸打都可以研究下
應該係話,密碼學既其中一個原則就係我唔理你個function勁到曉飛都好,即使人地知道左你條formula 點計,佢都唔應該可以就咁用個output揾到個input
就好似上面巴打factorization個例子一樣
個重點反而係要令個key/output有咁長得咁長(bit size),咁就可以有效防子brute force attack.
佢唔係要你永世揾唔到,係要你十年內計唔到,所以以前啲key可能得128bit,而家就要用到256就係咁解