Encryption

在文本文件中是否有提供相同校驗和的校驗和?

  • February 27, 2017

假設我有一個文本文件(crypto.txt)。假設校驗和函式可以是任何類型的函式(MD5、SHA-1 等)。有沒有辦法讓文件中的校驗和值(crypto.txt 包含一個可能是校驗和的字元串)在通過校驗和程序時輸出與文本文件中的內容完全相同的值?

萬一我失去了你,這裡有一個快速的細分:

crypto.txt contains a viable checksum value (said value = x)
checksum of crypto.txt = x

這甚至可能嗎?有數學證明它是錯/對的嗎?

對於諸如 CRC16 或 CRC32 之類的校驗和,很可能在包含相同 CRC 值的文本上具有一個值(無論格式如何,無論是二進制、十六進制還是 base 64)。證明很簡單:您可以簡單地將例如 32-48 位計數器放在文本末尾,然後等到找到 CRC。但在實踐中,您可以只計算您需要添加前綴、附加或介於兩者之間的任何值並獲得正確的 CRC——無論是否包含它。CRC 等校驗和並不安全。

對於安全散列函式,這是不可能的。甚至在計算上也無法找到任何消息 $ m $ 雜湊值在哪裡 $ h $ , 對於任何選擇 $ h $ (這不是一個已知的雜湊值)。這是一個比你提出的更強大的假設。無法找到 $ x = \operatorname{H}(a | \operatorname{encode}(x) | b) $ 即使您可以選擇任何特殊值 $ a $ 和 $ b $ , 和任何 $ \operatorname{encode} $ 手術。

由於無法證明散列函式的安全性這一簡單事實,無法完全*證明上述內容。*SHA-1 長期以來被認為是安全的,但現在可能可以創建包含雜湊值的文本。

引用自:https://crypto.stackexchange.com/questions/44238