乙個關於無失真壓縮的設想(瞎想的,懇請各位勿噴)

2022-09-19 10:48:10 字數 997 閱讀 7458

很久以前,第一次接觸md5,發現,用md5加密乙個字串,字串會變得很短。

之後就想:如果用md5壓縮檔案,再在解壓時進行還原呢?那壓縮效率豈不是太高了?

直到某一天,我知道了:md5是不可逆的。

於是,我又在閒暇的時候完善這個想法,今天覺得想得也差不多了,分享給大家:

檔案變成md5,然後還原壓縮之後的md5,列出所有可能性,之後按一定順序排列(暫且叫這個順序為「還原結果排列協議」)。然後把還原結果逐個與原檔案進行比較,如果有乙個可能性與原檔案相同,就把這個可能性的序號(暫且把這個序號稱作原「原檔案id」)記錄下來,與md5一併儲存。

還原壓縮之後的md5,重複列出可能性幾次,幾次取決於原檔案id,然後把最後一次還原得到的結果進行儲存,然後便完成了解壓

首先是一整個壓縮檔案,可以參考其他的壓縮技術來儲存目錄。然後檔案部分,每乙個檔案都是乙個物件,有md5和id兩個引數(暫定),前者表示檔案md5,後者表示原檔案id。

具體的**至少這幾年是沒指望了。

123456加密(32位)之後是

e10adc3949ba59abbe56e057f20f883e

壓縮時先計算並儲存,然後進行還原,從000000開始,然後再試,舉例(只是個例子):還原出000001,之後再試,舉例,還原出000003(現實中絕對不是這樣)。以這樣的順序依次計算解密結果,直到算出123456時,電腦儲存已經嘗試的次數,與md5值一併儲存,完成壓縮。

解壓時根據前面儲存的嘗試次數,重複還原檔案內容,解壓出檔案。

我知道這樣壓縮速度會很慢,不多它確實可以把很大的檔案壓縮到很小,至少可以用到某些場景,比如備份一整個系統盤或者資料盤,這樣子可以剩下不少空間,不過這意味著我們需要極好的對比演算法或者極大的ram。這個想法幾乎是在我聽說md5的時候就有了,我或許有點天真,但一直憋著,只有自己知道。這種感覺真的不舒服,來表達一下。也希望能為未來的壓縮技術做點貢獻吧,感謝你能讀到這裡!

不過如果哪天真的有**實現了我的想法,也不要忘記我哦!(手動滑稽)

嘿嘿!你怎麼知道下面還有?

關於提高Flex開發效率的乙個模式設想

目前這個flex專案 量居然達到了1萬7千行,我說編譯速度怎麼會那麼慢的。這個速度會導致flex在大型的專案中根本就無法使用。每做一次修改,整個專案就需要從頭編譯一遍,那種速度絕對是不能忍受的。解決的方法我想來想去只有乙個,降低編譯的 行數。那麼如何做呢?1.將業務邏輯與介面邏輯分離。介面在執行業務...

開發乙個OA系統的設想

學php一年多,一直沒有自己的作品 工作上的不算 最近有乙個想法 只是乙個想法,我也不知道能不能實現 那就是用php開發乙個oa辦公系統,它的功能應該和市場上的那些差不多 最好有新的東西 我想它應該有以下的一些特點 1 使用者管理 許可權設定 每個使用者有不同的許可權,每個功能按模組劃分 2 靈活的...

想寫乙個ORM的框架

其實也是受公司框架啟發,公司寫bean都是自動生成,只要在乙個web應用中輸入包名和表名,就能自動生成bean,其中一種bean是普通的pojo,是資料庫表的一些字段,加上setget方法,另外一些就是增刪改查的table類。以上雖然看不到如何實現,但是無非也就是讀取databasemeta和res...