Hash
如何反轉這個雜湊函式?
我有一個函式需要一個 $ m $ 字節輸入 $ x_i $ 並將其映射為 32 字節輸出 $ y_j $ . 雜湊函式定義為:
$$ y_j = \sum_{i=1}^{m} (x_i)^{i-1} \pmod {127} $$ 輸入僅限於 ASCII 字元“f”到“u”。輸入字母按字母順序排列。
如何恢復輸入 $ x_i $ 給定輸出 $ y_j $ ?
我認為您可以手動計算或編寫程式碼來解決此問題。您需要從 end 開始計算 X 值。
例如 : $ X_{32} $ = 84 = $ X_{32}^{31} $ $ mod_{117} $
當你拿到時 $ X_{32} $ 值然後你可以計算 $ X_{31} $ :
$ X_{31} $ = 62 = $ X_{31}^{30} $ + $ X_{32}^{30} $ $ mod_{117} $
唯一未知的值是 $ X_{31} $ 這裡。你需要這樣做,直到你到達 $ X_1 $ 然後所有數據都將被解密。
你不能唯一地反轉它。您的雜湊將具有以下形式
$$ y_1 \quad y_2 \quad \dots \quad y_m $$和 $ y_i=\sum_{k=1}^m x_k^{i-1}. $ 先看特例 $ m=2 $ . $ y_1 $ 將一直是 $ y_1=m=2,, $ 另一個方程是 $ y_2=x_1 + x_2 $ . 你不能唯一地確定兩者 $ x_1,x_2 $ . 在一般情況下,您有 $ y_1=m $ 和 $ m-1 $ 方程為 $ m $ 未知實體 $ x_i $ .