可以使用可逆哈希算法作為壓縮函數(shù)嗎?
據(jù)我們所知,SHA-256輸出中的任何文本、文件、字節(jié)…都將以64十六進(jìn)制長度返回。有沒有可能創(chuàng)建一個密碼,它可以做與SHA-256相同的事情,但可以反轉(zhuǎn),所以如果我
解答動態(tài)
嚴(yán)格地說,所有哈希函數(shù)都在壓縮,因為輸出可能小于輸入,但我想您是在問壓縮以后可以無損解壓縮的數(shù)據(jù)。
由于鴿子洞原理,這是不可能的。哈希算法的固定輸出空間小于輸入空間這一事實意味著,對于同一輸出,總是有多個可能的輸入。即使您可以找到一個前映像(即“反向”散列),您也不知道它是原始前映像還是僅僅是前映像。如果輸入大小足夠。ㄐ∮谏⒘兄担,那么這是可能的,因為您可以丟棄較大的前圖像,只保留非常有限的有意義的小圖像(例如,只有有效的ASCII字符串),但這不是壓縮。
作為一個極端的例子,想象一個“散列函數(shù)”;一個簡單的前像攻擊:多項式x+1的1位CRC(即偶數(shù)奇偶校驗位)。如果我給你這個函數(shù)的輸出,輸出是1,你將完全不知道輸入是什么。你可以計算輸入,但找不到輸入。對于1位哈希,輸入空間中所有可能輸入的一半映射到同一輸出!
這種不可能是施奈爾流行笑話的基礎(chǔ)事實:對布魯斯來說Schneier,SHA-1僅僅是一個壓縮算法。
如果問題是關(guān)于(當(dāng)前形式)
可逆加密哈希函數(shù)
那么不是!
加密安全散列函數(shù)的單向性屬性將阻止這種情況。哈希函數(shù)不使用鍵。因此,如果你能反轉(zhuǎn),每個人都會反轉(zhuǎn),根本就沒有安全的散列函數(shù)。
此外,數(shù)學(xué)上也不可能;散列函數(shù)使用任意大的輸入來消化固定大小的$\ell$
- End
免責(zé)聲明:
本頁內(nèi)容僅代表作者本人意見,若因此產(chǎn)生任何糾紛由作者本人負(fù)責(zé),概與琴島網(wǎng)公司無關(guān)。本頁內(nèi)容僅供參考,請您根據(jù)自身實際情況謹(jǐn)慎操作。尤其涉及您或第三方利益等事項,請咨詢專業(yè)人士處理。