SHA-256 在某個域上是雙射的嗎?
在討論了雙射性之後,鑑於在域/餘域上研究了函式逆,我想問一下我們是否可以找到這個函式可以是雙射的子集。
假設所有字母數字字元串的子集正好是 5 個字元。這個子集的基數應該是 62 個字元的排列,一行 5 個字元 = 62!/ 57!〜7.76億。這絕對低於 2^256 。這足以說明該函式在該域上是單射的,還是我需要計算每個值才能得出這個結論?在這種情況下,超射性會發生什麼?
OBS:我可能會對連續函式產生混淆,所以如果我弄錯了什麼,請告訴我。
當然是。如果嚴格限制輸入域,那麼問題很簡單。該函式是確定性的,因此只需在感興趣的輸入域(域 $ A $ )。然後,您選擇唯一的雜湊(共同域 $ O $ ) 並丟棄衝突的輸入/輸出對以創建輸入子域 $ B \in A $ . 您將有無效的碰撞,並將有一個雙射為 $ B \to O $ .
注意:我們還沒有看到 SHA-256 輸出域上的衝突,但上述理論成立。並且使用這種蠻力方法,隨著輸入域的基數下降,共域變得更加傾向於雙射,因為 $ p(\text{bijection}) \propto \frac{1}{|A|} $ 通過簡單的可計算性。
但是我很難理解這種奇怪域的加密用途。我不相信sha256inv實際上會存在,因為限制輸入有點作弊。而且他們仍然只分析計算一種方式 $ \text{sha256}:B \to O $ 這是由於基本的原像電阻。 $ \text{sha256inv}: O \to B $ 仍然難以捉摸。和一般 $ \text{sha256inv}: O \to A $ 必須保持不可能,因為您故意消除了我們在數學上知道存在的碰撞。
附言 $ |A|= 916 \times 10^6 $ , 如果你考慮 5 沒有。完全隨機選擇的 62 個字母數字值。這在發燒友的機器上很容易計算。
PPS 我的最後一段是指您的評論。