壓縮分為演算法
主要是看文件格式,像rmvb等格式都是已經壓縮過的了,再壓空間不大,還有就是獨立格式文件,一般系統無法識別,並且文件名比較怪的都是別人獨立開發的格式,這些也沒什麼壓縮空間,演算法你要看那格式種了,系統常見的文件壓縮演算法都是
ZIP文件的總體格式
分文件頭信息+文件壓縮數據
中心目錄+中心目錄記錄結束符
1.分文件頭信息:
位元組數 描述
4 分文件頭信息標志(0x04034b50)
2 解壓縮所需版本
2 通用比特標志位(置比特0位=加密;置比特1位=使用壓
縮方式6,並使用8k變化目錄,否則使用4k變化目錄;置比特2位=使用壓
縮方式6,並使用3個ShannonFano樹對變化目錄輸出編碼,否則使用2個
ShannonFano樹對變化目錄輸出編碼,其它比特位未用)
2 壓縮方式(0=不壓縮,1=縮小,2=以壓縮因素1縮小,3=以
壓縮因素2縮小,4=以壓縮因素3縮小,5=以壓縮因素4縮小,6=自展)
2 文件最後修改時間
2 文件最後修改日期
4 32位校驗碼
4 壓縮文件大小
4 未壓縮文件大小
2 文件名長
2 擴展段長
? 文件名(不定長)
? 擴展段(不定長)
2.中心目錄結構
文件頭信息...中心目錄記錄結束符
文件頭:
位元組數 描述
4 中心文件頭信息標志(0x02014b50)
2 主機操作系統(高位位元組表示主機操作系統,低位字
節表示ZIP壓縮軟體版本號,其值除以10表示主版本號,其值模10表示
次版本號。0=MS-DOS,OS/2 FAT文件系統,1=Ami ga,2=VMS,3=Unix及
變種,4=VM/CMS,5=AtariST,6=OS/2 HPFS,7=Macintosh,8=Z-System,9
=C P/M,10-255未用)
2 解壓縮所需版本
2 通用比特標志
2 壓縮方式
2 文件最後修改時間(用標準的MS-DOS時間日 期格式
編碼)
2 文件最後修改日期
4 32位校驗碼(使用David Schwaderer的CRC-32演算法產
生)
4 壓縮文件大小
4 未壓縮文件大小
2 文件名長
2 擴展段長
2 文件注釋長(分別為文件名長,擴展段,注釋 段,小於
64K)
2 磁碟起始號(本文件在磁碟中的起始號)
2 內部文件屬性(最低位若置1,表示為ASC文本,否則為
二進制數據,其它位未用)
4 外部文件屬性(依賴於主機操作系統)
4 分文件頭相對位移
? 文件名(不定長)
? 擴展段(不定長,用於未來擴展,低版本為0長)
? 文件注釋(不定長)
3.中心目錄記錄結束符
位元組數 描述
4 中心目錄標記結束符(0x06054b50)
2 磁碟號(其中包括中心目錄結束記錄)
2 磁碟中心目錄起始號
2 磁碟中心目錄入口總數
2 中心目錄入口總數(ZIP文件中的文件總數)
2 整個中心目錄大小
4 關於起始磁碟號的中心目錄初始偏移
2 ZIP文件注釋長度
? ZIP文件注釋(不定長)
加密方法
PKZIP中使用的加密方法由Roger Schlafly提供。ZIP文件在解壓
縮前必須先解密。每個加密文件具有一個12位元組的加密文件頭擴展信
息,存儲於數據區的起始位置,加密前先設置一個起始值,然後被三個3
2位的密鑰加密。密鑰被使用者提供的口令初始化。12個位元組加密之
後,由PKZIP的偽隨機數產生方法,結合PKZIP中使用CRC-32演算法對密鑰
進行更新。
具體實施分為三步:
1.用口令對三個32位密鑰初始化。
K(0)=305419896,K(1)=591751049,K(2)=878082192
循環 for i=0 to length(password)-1
調用更新密鑰函數 update_keys(password(i))
結束循環(循環口令長度次)
其中更新密鑰函數為:
update_keys(char):
Key(0)=crc32(key(0),char)
Key(1)=Key(1)+(Key(0)& 000000ffH)
Key(1)=Key(1)*134775813+1
Key(2)=crc32(Key(2),Key(1)〉〉24)
end update_keys
CRC32函數中,給定一個4位元組的CRC值和一個字元,返回一個由CRC
-32演算法更新的CRC。具體為:
crc32(c,b)=crc32tab[(c^b)&0xff]^(c>>8),crc32tab[256]的值
為固定的256個4位元組數。
2.讀取並加密12位元組的加密頭,再次對密鑰進行初始化。
將12個位元組的加密頭讀入緩沖區buffer(0)至buffer(11),循環fo
r i=0 to 11
C=buffer(i)^decrypt_byte()
update_keys(C)
buffer(i)=C
結束循環(循環12次)
其中的decrypt_byte()函數為:
unsigned char decrypt_byte()
local unsigned short temp
temp=Key(2)¦2
decrypt_byte=((temp*(temp^1))>>8)&0xff
end decrypt_byte
該步結束後,緩沖區中最後的二個位元組buffer(10)和buffer(11)
將成為加密文件校驗碼的二個最高位(按低至高順序存放)。對ZIP加
密文件進行解壓縮前,PKUNZIP軟體將使用者提供的口令按上述二個步
驟進行處理,得到的結果與校驗碼的二個高位位元組進行比較,只有當提
供了正確的口令時,結果一致,才能進行後續的解壓縮過程,否則,PKZI
P報告錯誤信息,程序自動結束。
3.讀取壓縮的數據流並以加密密鑰對其進行加密。
壓縮數據流按下述過程加密:
循環 直至數據流結束
C=數據流的一個位元組
temp=C^decrypt_byte()
update_keys(temp)
輸出temp
結束循環
❷ 數字音頻壓縮的主要基本演算法有哪些
WAV:無損
是微軟公司開發的一種聲音文件格式,它符合 PIFFResource Interchange File Format 文件規范,用於保存WINDOWS平台的音頻信息資源,被WINDOWS平台及其應用程序所支持。「*.WAV」格式支持MSADPCM、CCITT A LAW等多種壓縮演算法,支持多種音頻位數、采樣頻率和聲道,標准格式的WAV文件和CD格式一樣,也是44.1K的采樣頻率,速率88K/秒,16位量化位數,看到了吧,WAV格式的聲音文件質量和CD相差無幾,也是目前PC機上廣為流行的聲音文件格式,幾乎所有的音頻編輯軟體都「認識」WAV格式。
這里順便提一下由蘋果公司開發的AIFF(Audio Interchange File Format)格式和為UNIX系統開發的AU格式,它們都和和WAV非常相像,在大多數的音頻編輯軟體中也都支持它們這幾種常見的音樂格式。
MP3:流行
MP3格式誕生於八十年代的德國,所謂的MP3也就是指的是MPEG標准中的音頻部分,也就是MPEG音頻層。根據壓縮質量和編碼處理的不同分為3層,分別對應 「*.mp1"/「*.mp2」/「*.mp3」這3種聲音文件。需要提醒大家注意的地方是:MPEG音頻文件的壓縮是一種有損壓縮,MPEG3音頻編碼具有10:1~12:1的高壓縮率,同時基本保持低音頻部分不失真,但是犧牲了聲音文件中12KHz到16KHz高音頻這部分的質量來換取文件的尺寸,相同長度的音樂文件,用*.mp3格式來儲存,一般只有*.wav文件的1/10,而音質要次於CD格式或WAV格式的聲音文件。由於其文件尺寸小,音質好;所以在它問世之初還沒有什麼別的音頻格式可以與之匹敵,因而為*.mp3格式的發展提供了良好的條件。直到現在,這種格式還是風靡一時,作為主流音頻格式的地位難以被撼動。但是樹大招風,MP3音樂的版權問題也一直是找不到辦法解決,因為MP3沒有版權保護技術,說白了也就是誰都可以用。
MP3格式壓縮音樂的采樣頻率有很多種,可以用64Kbps或更低的采樣頻率節省空間,也可以用320Kbps的標准達到極高的音質。我們用裝有Fraunhofer IIS Mpeg Lyaer3的 MP3編碼器(現在效果最好的編碼器)MusicMatch Jukebox 6.0在128Kbps的頻率下編碼一首3分鍾的歌曲,得到2.82MB的MP3文件。採用預設的CBR(固定采樣頻率)技術可以以固定的頻率采樣一首歌曲,而VBR(可變采樣頻率)則可以在音樂「忙」的時候加大采樣的頻率獲取更高的音質,不過產生的MP3文件可能在某些播放器上無法播放。我們把VBR的級別設定成為與前面的CBR文件的音質基本一樣,生成的VBR MP3文件為2.9MB。
MIDI:作曲家最愛
經常玩音樂的人應該常聽到MIDI(Musical Instrument Digital Interface)這個詞,MIDI允許數字合成器和其他設備交換數據。MID文件格式由MIDI繼承而來。MID文件並不是一段錄制好的聲音,而是記錄聲音的信息,然後在告訴音效卡如何再現音樂的一組指令。這樣一個MIDI文件每存1分鍾的音樂只用大約5~10KB。今天,MID文件主要用於原始樂器作品,流行歌曲的業余表演,游戲音軌以及電子賀卡等。*.mid文件重放的效果完全依賴音效卡的檔次。*.mid格式的最大用處是在電腦作曲領域。*.mid文件可以用作曲軟體寫出,也可以通過音效卡的 MIDI口把外接音序器演奏的樂曲輸入電腦里,製成*.mid文件。
WMA:最具實力
WMA (Windows Media Audio) 格式是來自於微軟的重量級選手,後台強硬,音質要強於MP3格式,更遠勝於RA格式,它和日本YAMAHA公司開發的VQF格式一樣,是以減少數據流量但保持音質的方法來達到比MP3壓縮率更高的目的,WMA的壓縮率一般都可以達到1:18左右,WMA的另一個優點是內容提供商可以通過DRM(Digital Rights Management)方案如Windows Media Rights Manager 7加入防拷貝保護。這種內置了版權保護技術可以限制播放時間和播放次數甚至於播放的機器等等,這對被盜版攪得焦頭亂額的音樂公司來說可是一個福音,另外 WMA還支持音頻流(Stream) 技術,適合在網路上在線播放,作為微軟搶占網路音樂的開路先鋒可以說是技術領先、風頭強勁,更方便的是不用象MP3那樣需要安裝額外的播放器,而 Windows操作系統和Windows Media Player的無縫捆綁讓你只要安裝了windows操作系統就可以直接播放WMA音樂,新版本的Windows Media Player7.0更是增加了直接把CD光碟轉換為WMA聲音格式的功能,在新出品的操作系統Windows XP中,WMA是默認的編碼格式,大家知道Netscape的遭遇,現在「狼」又來了。WMA這種格式在錄制時可以對音質進行調節。同一格式,音質好的可與CD媲美,壓縮率較高的可用於網路廣播。雖然現在網路上還不是很流行,但是在微軟的大規模推廣下已經是得到了越來越多站點的承認和大力支持,在網路音樂領域中直逼*.mp3,在網路廣播方面,也正在瓜分Real打下的天下。因此,幾乎所有的音頻格式都感受到了WMA格式的壓力。
RealAudio:流動旋律
RealAudio主要適用於在網路上的在線音樂欣賞,現在大多數的用戶仍然在使用56Kbps或更低速率的Modem,所以典型的回放並非最好的音質。有的下載站點會提示你根據你的Modem速率選擇最佳的Real文件。現在real的的文件格式主要有這么幾種:有RA(RealAudio)、 RM(RealMedia,RealAudio G2)、RMX(RealAudio Secured),還有更多。這些格式的特點是可以隨網路帶寬的不同而改變聲音的質量,在保證大多數人聽到流暢聲音的前提下,令帶寬較富裕的聽眾獲得較好的音質。
近來隨著網路帶寬的普遍改善,Real公司正推出用於網路廣播的、達到CD音質的格式。如果你的RealPlayer軟體不能處理這種格式,它就會提醒你下載一個免費的升級包。許多音樂網站 提供了歌曲的Real格式的試聽版本。現在最新的版本是RealPlayer 11。
VQF:無人問津
雅馬哈公司另一種格式是*.vqf,它的核心是減少數據流量但保持音質的方法來達到更高的壓縮比,可以說技術上也是很先進的,但是由於宣傳不力,這種格式難有用武之地。*.vqf可以用雅馬哈的播放器播放。同時雅馬哈也提供從*.wav文件轉換到*.vqf文件的軟體。 此文件缺少特點外加缺乏宣傳,現在幾乎已經宣布死刑了。
OGG:新生代音頻格式
ogg格式完全開源,完全免費, 和mp3不相上下的新格式。 與MP3類似,OGGVorbis也是對音頻進行有損壓縮編碼,但通過使用更加先進的聲學模型去減少損失,因此,相同碼率編碼的OGGVorbis比MP3音質更好一些,文件也更小一些。另外,MP3格式是受專利保護的。發布或者銷售MP3編碼器、MP3解碼器、MP3格式音樂作品,都需要付專利使用費。而OGGVorbis就完全沒有這個問題。目前,OGGVorbis雖然還不普及,但在音樂軟體、游戲音效、便攜播放器、網路瀏覽器上都得到廣泛支持。
FLAC:自由無損音頻格式
FLAC即是Free Lossless Audio Codec的縮寫,中文可解為無損音頻壓縮編碼。FLAC是一套著名的自由音頻壓縮編碼,其特點是無損壓縮。不同於其他有損壓縮編碼如MP3 及AAC,它不會破壞任何原有的音頻資訊,所以可以還原音樂光碟音質。現在它已被很多軟體及硬體音頻產品所支持。FLAC是免費的並且支持大多數的操作系統,包括 Windows,基於Unix內核而開發的系統 (Linux, *BSD,Solaris,OSX,IRIX),BeOS,OS/2,Amiga。並且FLAC提供了在開發工具 autotools,MSVC,Watcom C,ProjectBuilder上的build系統。
APE:最有前途的網路無損格式
APE是目前流行的數字音樂文件格式之一。與MP3這類有損壓縮方式不同,APE是一種無損壓縮音頻技術,也就是說當你將從音頻CD上讀取的音頻數據文件壓縮成APE格式後,你還可以再將APE格式的文件還原,而還原後的音頻文件與壓縮前的一模一樣,沒有任何損失。APE的文件大小大概為CD的一半,但是隨著寬頻的普及,APE格式受到了許多音樂愛好者的喜愛,特別是對於希望通過網路傳輸音頻CD的朋友來說,APE可以幫助他們節約大量的資源。
作為數字音樂文件格式的標准,WAV格式容量過大,因而使用起來很不方便。因此,一般情況下我們把它壓縮為MP3或 WMA 格式。壓縮方法有無損壓縮,有損壓縮,以及混成壓縮。MPEG, JPEG就屬於混成壓縮,如果把壓縮的數據還原回去,數據其實是不一樣的。當然,人耳是無法分辨的。因此,如果把 MP3, OGG格式從壓縮的狀態還原回去的話,就會產生損失。
然而APE壓縮格式即使還原,也能毫無損失地保留原有音質。所以,APE可以無損失高音質地壓縮和還原。當然,目前只能把音樂CD中的曲目和未壓縮的WAV文件轉換成APE格式,MP3文件還無法轉換為APE格式。事實上APE的壓縮率並不高,雖然音質保持得很好,但是壓縮後的容量也沒小多少。一個34MB的WAV文件,壓縮為APE格式後,仍有17MB左右。對於一整張CD來說,壓縮省下來的容量還是可觀的。
APE的本質,其實它是一種無損壓縮音頻格式。龐大的WAV音頻文件可以通過Monkey's Audio這個軟體壓縮為APE。很多時候它被用做網路音頻文件傳輸,因為被壓縮後的APE文件容量要比WAV源文件小一半多,可以節約傳輸所用的時間。更重要的是,通過Monkey's Audio解壓縮還原以後得到的WAV文件可以做到與壓縮前的源文件完全一致。所以APE被譽為「無損音頻壓縮格式」,Monkey''s Audio被譽為「無損音頻壓縮軟體」。與採用WinZip或者WinRAR這類專業數據壓縮軟體來壓縮音頻文件不同,壓縮之後的APE音頻文件是可以直接被播放的。Monkey's Audio會向Winamp中安裝一個「in_APE.dll」插件,從而使Winamp也具備播放APE文件的能力。同樣foobar2000,以及千千靜聽也能支持APE的播放。
❸ RAR和ZIP兩種格式的壓縮演算法分別是什麼
RAR文件的擴展名是.rar(不區分大小寫,),MIME類型是application/x-rar-compressed。同樣是無損數據壓縮,RAR文件通常比ZIP文件壓縮比要高,但是壓縮速度較慢。因為RAR文件頭也要佔據一定空間,在數據壓縮餘地不大時,壓縮過的文件可能比原文件要大。RAR的一個主要優點是可以把文件壓縮目標分割到多個文件,並且很容易從這樣的分割的壓縮文件解壓出源文件。另外,RAR也支持緊縮格式,把所有文件壓縮到同一個數據區以加大壓縮比,代價是解壓一個單獨的文件時必須解壓其前面的所有文件。新的RAR的加密演算法使用的是AES,而舊的RAR的加密演算法是私有的。這兩種演算法都很難破解,所以在沒有密碼的情況下只能用字典暴力破解法來破解。RAR中也可以加入冗餘的修復信息,在文件損壞但是修復信息足夠完好時可以對壓縮包進行修復。
❹ 數據壓縮演算法可分無損壓縮和( )壓縮兩種
有損壓縮。無損壓縮是指對原數據毫無損害完全保留,有損是指犧牲一部分數據真實性且對原數據影響不大的情況下,換取更小的壓縮後存儲空間。
❺ 壓縮演算法是怎麼回事分成幾類請教高手。。。
問題太大,壓縮演算法是一種通過計算冗餘和數據相似度來達到減小數據存儲量的目的。
籠統的講,我認為壓縮演算法兩種 有損和無損,有損的比如圖片壓縮,典型的是JPG。無損的有很多,現在流行的壓縮格式 ZIP RAR ARC ARJ等等
❻ 數據壓縮技術分為哪兩類使用方法是什麼
【導讀】數據壓縮技術是大數據傳輸過程中需要採用的一種數據存儲方法。那麼數據壓縮技術分為哪兩類?使用方法是什麼呢?為此小編今天就來和大家細細聊聊關於數據壓縮技術那些事,同時也提醒各位大數據工程師在使用數據壓縮過程中的一些注意事項及使用方法。
在數據壓縮中,通過使用比原始數據更少的位來對數據進行編碼,數據壓縮有兩種方法:無損壓縮,它消除了冗餘但不丟失任何原始數據;有損數據壓縮,可通過刪除不必要或不太重要的信息來修改數據,在大數據的傳輸和存儲中使用數據壓縮非常重要,因為它減少了IT部門必須為該數據提供的網路帶寬和存儲量,同樣重要的是,您實際上並不想保留某些類型的大數據,例如作為物聯網(IoT)通信數據一部分的設備間握手引起的抖動。
為了最大程度地利用大數據進行數據壓縮,您必須知道何時何地使用不同類型的數據壓縮工具和公式。選擇數據壓縮方法時,請牢記以下幾條有用的准則:
何時使用無損數據壓縮
如果您有一個大數據應用程序,並且無法承受丟失任何數據的麻煩,並且需要解壓縮壓縮的每個位元組的數據,那麼您將需要一種無損的數據壓縮方法,當您壓縮來自資料庫的數據時,即使您意味著必須存儲更多的數據,也希望進行無損數據壓縮。在選擇將此數據重新提交到其資料庫時,您需要解壓縮完整數據,以便它可以與資料庫端的數據匹配並進行存儲。
何時使用有損數據壓縮
有時您不需要或不需要所有數據,例如物聯網和網路設備的抖動,您不需要這些數據,只需提供給您業務所需的上下文信息的數據即可。第二個示例是在數據壓縮過程的前端可能使用的數據壓縮公式中使用人工智慧(AI),如果您正在研究一個特定的問題,並且只希望與該問題直接相關的數據,則可以決定讓數據壓縮公式不包含與該問題無關的任何數據。
如何選擇正確的編解碼器
一個編解碼器是一個硬體,軟體的組合,壓縮和解壓縮數據,所以它在大數據壓縮和解壓縮操作的核心作用,編解碼器有許多種,因此為正確的數據或文件類型選擇正確的編解碼器很重要,您選擇的編解碼器類型將取決於您嘗試壓縮的數據和文件類型,有無損和有損數據的編解碼器,也有一些編解碼器必須將所有數據文件作為「整體」處理,而其他編解碼器可以將數據分割開,以便可以對其進行並行處理,然後在其目的地重新組合,某些編解碼器設置用於可視數據,而其他編解碼器僅處理音頻數據。
為什麼數據壓縮很重要?
確定將用於大數據的數據壓縮類型是大數據操作的重要組成部分,僅在資源端,IT人員就無法承受處理失控和迅速發展的存儲的成本,即使必須完整存儲數據,也應盡可能地對其進行壓縮,也就是說,您可以採取其他步驟來限制存儲和處理,以及針對大數據壓縮中採用的演算法和方法的最適合操作,掌握這些選項是IT部門的關鍵數據點。
以上就是小編今天給大家整理分享關於「數據壓縮技術分為哪兩類?使用方法是什麼?」的相關內容希望對大家有所幫助。小編認為要想在大數據行業有所建樹,需要考取部分含金量高的數據分析師證書,這樣更有核心競爭力與競爭資本。
❼ 壓縮的演算法都有哪些
只有最常見的zip的,估計你都要研究上n久了。。。
文本文件一般有zip,rar,
網頁文件有htz
視頻文件有rm,avi
語音文件有mp3,
圖片文件有png,gif,jpg
這些都是文件壓縮的。。。。
------------------------------------
ZIP文件的總體格式
分文件頭信息+文件壓縮數據
中心目錄+中心目錄記錄結束符
1.分文件頭信息:
位元組數 描述
4 分文件頭信息標志(0x04034b50)
2 解壓縮所需版本
2 通用比特標志位(置比特0位=加密;置比特1位=使用壓
縮方式6,並使用8k變化目錄,否則使用4k變化目錄;置比特2位=使用壓
縮方式6,並使用3個ShannonFano樹對變化目錄輸出編碼,否則使用2個
ShannonFano樹對變化目錄輸出編碼,其它比特位未用)
2 壓縮方式(0=不壓縮,1=縮小,2=以壓縮因素1縮小,3=以
壓縮因素2縮小,4=以壓縮因素3縮小,5=以壓縮因素4縮小,6=自展)
2 文件最後修改時間
2 文件最後修改日期
4 32位校驗碼
4 壓縮文件大小
4 未壓縮文件大小
2 文件名長
2 擴展段長
? 文件名(不定長)
? 擴展段(不定長)
2.中心目錄結構
文件頭信息...中心目錄記錄結束符
文件頭:
位元組數 描述
4 中心文件頭信息標志(0x02014b50)
2 主機操作系統(高位位元組表示主機操作系統,低位字
節表示ZIP壓縮軟體版本號,其值除以10表示主版本號,其值模10表示
次版本號。0=MS-DOS,OS/2 FAT文件系統,1=Ami ga,2=VMS,3=Unix及
變種,4=VM/CMS,5=AtariST,6=OS/2 HPFS,7=Macintosh,8=Z-System,9
=C P/M,10-255未用)
2 解壓縮所需版本
2 通用比特標志
2 壓縮方式
2 文件最後修改時間(用標準的MS-DOS時間日 期格式
編碼)
2 文件最後修改日期
4 32位校驗碼(使用David Schwaderer的CRC-32演算法產
生)
4 壓縮文件大小
4 未壓縮文件大小
2 文件名長
2 擴展段長
2 文件注釋長(分別為文件名長,擴展段,注釋 段,小於
64K)
2 磁碟起始號(本文件在磁碟中的起始號)
2 內部文件屬性(最低位若置1,表示為ASC文本,否則為
二進制數據,其它位未用)
4 外部文件屬性(依賴於主機操作系統)
4 分文件頭相對位移
? 文件名(不定長)
? 擴展段(不定長,用於未來擴展,低版本為0長)
? 文件注釋(不定長)
3.中心目錄記錄結束符
位元組數 描述
4 中心目錄標記結束符(0x06054b50)
2 磁碟號(其中包括中心目錄結束記錄)
2 磁碟中心目錄起始號
2 磁碟中心目錄入口總數
2 中心目錄入口總數(ZIP文件中的文件總數)
2 整個中心目錄大小
4 關於起始磁碟號的中心目錄初始偏移
2 ZIP文件注釋長度
? ZIP文件注釋(不定長)
加密方法
PKZIP中使用的加密方法由Roger Schlafly提供。ZIP文件在解壓
縮前必須先解密。每個加密文件具有一個12位元組的加密文件頭擴展信
息,存儲於數據區的起始位置,加密前先設置一個起始值,然後被三個3
2位的密鑰加密。密鑰被使用者提供的口令初始化。12個位元組加密之
後,由PKZIP的偽隨機數產生方法,結合PKZIP中使用CRC-32演算法對密鑰
進行更新。
具體實施分為三步:
1.用口令對三個32位密鑰初始化。
K(0)=305419896,K(1)=591751049,K(2)=878082192
循環 for i=0 to length(password)-1
調用更新密鑰函數 update_keys(password(i))
結束循環(循環口令長度次)
其中更新密鑰函數為:
update_keys(char):
Key(0)=crc32(key(0),char)
Key(1)=Key(1)+(Key(0)& 000000ffH)
Key(1)=Key(1)*134775813+1
Key(2)=crc32(Key(2),Key(1)〉〉24)
end update_keys
CRC32函數中,給定一個4位元組的CRC值和一個字元,返回一個由CRC
-32演算法更新的CRC。具體為:
crc32(c,b)=crc32tab[(c^b)&0xff]^(c>>8),crc32tab[256]的值
為固定的256個4位元組數。
2.讀取並加密12位元組的加密頭,再次對密鑰進行初始化。
將12個位元組的加密頭讀入緩沖區buffer(0)至buffer(11),循環fo
r i=0 to 11
C=buffer(i)^decrypt_byte()
update_keys(C)
buffer(i)=C
結束循環(循環12次)
其中的decrypt_byte()函數為:
unsigned char decrypt_byte()
local unsigned short temp
temp=Key(2)¦2
decrypt_byte=((temp*(temp^1))>>8)&0xff
end decrypt_byte
該步結束後,緩沖區中最後的二個位元組buffer(10)和buffer(11)
將成為加密文件校驗碼的二個最高位(按低至高順序存放)。對ZIP加
密文件進行解壓縮前,PKUNZIP軟體將使用者提供的口令按上述二個步
驟進行處理,得到的結果與校驗碼的二個高位位元組進行比較,只有當提
供了正確的口令時,結果一致,才能進行後續的解壓縮過程,否則,PKZI
P報告錯誤信息,程序自動結束。
3.讀取壓縮的數據流並以加密密鑰對其進行加密。
壓縮數據流按下述過程加密:
循環 直至數據流結束
C=數據流的一個位元組
temp=C^decrypt_byte()
update_keys(temp)
輸出temp
結束循環
❽ 數據壓縮分為無損壓縮,有損壓縮和什麼 求第三種.
本人研究的《通用數據無損壓縮演算法》可以將任意的2進制數據N次壓縮,320位無損壓縮到300位