我試圖證明概念的一個簡單證明相對於一個脆弱性在遊戲中的一段代碼用C寫的簡單加密 - 在C哈希值的總和
比方說,我們要驗證字符登錄。登錄由用戶從圖形菜單中選擇n
項目(現在讓我們假設n=5
)處理。這些項目都是中世紀主題:
如:
_______________________________
| | | |
| Bow | Sword | Staff |
|-----------|-----------|-------|
| Shield | Potion | Gold |
|___________|___________|_______|
用戶必須點擊每個項目,然後選擇每個項目的編號。
驗證算法然後執行下列操作:
- 其中被選定的項目確定
- 降價每個字符串爲小寫(即:
Bow
變得bow
等) - 計算一個簡單的字符串的散列每個字符串(即:`弓=> b = 2,O = 15,W = 23,總和=(2 + 15 + 23 = 40)
- 乘以散列由所述值選擇相應的項目的用戶;該新值被稱爲
key
個
- 和的一起
keys
爲每個所選項目;這是最後的驗證哈希 - 重要提示:驗證會接受這個散列,與它的非零倍數沿(即:如果最終散列等於1111,然後2222,3333,8888等也有效)。
因此,舉例來說,假設我選擇:
Bow (1)
Sword (2)
Staff (10)
Shield (1)
Potion (6)
算法降低這些字符串爲小寫,計算出它們的字符串哈希值,乘以選定每串哈希通過號碼,然後將這些鍵彙總在一起。
如:
Final_Validation_Hash = 1*HASH(Bow) + 2*HASH(Sword) + 10*HASH(Staff) + 1*HASH(Shield) + 6*HASH(Potion)
歐拉方法的應用,我打算證明這些哈希值是不是唯一的,要制定一個簡單的應用程序來證明這一點。
在我的情況,用於5個項目,我就基本上可以嘗試計算:
(B)(y) = (A_1)(x_1) + (A_2)(x_2) + (A_3)(x_3) + (A_4)(x_4) + (A_5)(x_5)
其中:
B is arbitrary
A_j are the selected coefficients/values for each string/category
x_j are the hash values for each string/category
y is the final validation hash (eg: 1111 above)
B,y,A_j,x_j are all discrete-valued, positive, and non-zero (ie: natural numbers)
能有人要麼幫助我解決這個問題,或者點我到一個類似的例子(即:代碼,計算方程等)?我只需要解決最後一步(即:(B)(Y)= ...)。
最後,我寫了一個遞歸算法,去n
層次深,然後把手遞增,測試等,所有剩餘的可能的組合。效率不高,但效果顯着。我可以根據要求提供它(太大而無法在此發佈)。
問題是什麼這裏? –
已更新。好點子。謝謝。 +1 – DevNull
哪些零件在實施時遇到問題? – Attila