自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么rar密碼不能被破解

安全 數(shù)據(jù)安全
對于同一個源文件來說,不進行加密,壓縮完,其rar文件中的數(shù)據(jù)段是一模一樣的。但是如果對同一個源文件來說,即使使用同一個密碼,加密完rar文件中的數(shù)據(jù)段是不一樣的,這是由于加密的密鑰是依賴于一個Salt(8個字節(jié)的密鑰,用來加密時使用,存放在rar文件頭中里)。

一、Rar文件生成的流程。

Winrar加密文件時,總的分兩個步驟:

1:先把源文件壓縮,壓成一段數(shù)據(jù)段。

2:再將壓縮完的數(shù)據(jù)段加密。

對于同一個源文件來說,不進行加密,壓縮完,其rar文件中的數(shù)據(jù)段是一模一樣的。但是如果對同一個源文件來說,即使使用同一個密碼,加密完rar文件中的數(shù)據(jù)段是不一樣的,這是由于加密的密鑰是依賴于一個Salt(8個字節(jié)的密鑰,用來加密時使用,存放在rar文件頭中里),所以要解密rar加密文件關(guān)鍵在于數(shù)據(jù)解密這一步,那我們接下來研究一下如何加密的。

二、加密“壓縮完的數(shù)據(jù)段”的流程

1、獲取密鑰:

將明文的密碼與Salt一起,通過HASH算法,生成兩個16字節(jié)的密鑰。(一個是KEY(AES算法的參數(shù)),一個是initVector)

2、以Key和initVector來加密壓縮數(shù)據(jù):

這里,是一個循環(huán)加密的結(jié)構(gòu),每16字節(jié)作為一個塊,進行加密(這可能正是為什么加密完的文件長度總為16倍數(shù)的原因)。加密采用AES算法(RAR采用的是AES的rijndael的標準應(yīng)用)。這里注意:AES加密前,有一個異或運算,是先將每16字節(jié)塊與上一個16字節(jié)塊加密結(jié)果進行異或,然后再進行AES算法的。我用一個簡單的示意代碼看說明:

;===============================================

packblock[0]=packblock^initVector

encryptBlock[0]=AES(packblock[0])    ;(KEY為AES的密鑰)

for i=1 to 塊數(shù)量-1

packblock=packblock^encryptBlock[i-1]

encryptBlock=AES(packblock)  ?。唬↘EY為AES的密鑰)

next

;packblock表示壓縮完的每16字節(jié)數(shù)據(jù)

;encryptBlock表示加密完的每16字節(jié)數(shù)據(jù)

;===============================================

三、解密的過程

由于AES算法是對稱的,所以解密的過程,是加密過程的逆運算。但解密時AES算法過程與加密所用的不一樣(是因為解密過程中由KEY生成的子密鑰表不一樣)。仍然需要我們將密碼輸入,與salt一起生成兩個16字節(jié)密鑰,KEY和initVector。

;===============================================

packblock[0]=AES1(encryptBlock[0])    ;(KEY為AES的密鑰)

packblock[0]=packblock^initVector

for i=1 to 塊數(shù)量-1

packblock=AES1(encryptBlock)    ;(KEY為AES的密鑰)

packblock=packblock^encryptBlock[i-1]

next

;===============================================

那判斷密碼是否正確的在什么地方呢?

解密的過程是解密后的數(shù)據(jù)塊進行解壓縮,然后解成源文件,對該文件進行CRC校驗,存在RAR文件中的源文件CRC校驗碼比較,相同則密碼正確,不相同則密碼錯誤。#p#

四、無法秒破的原因

從上面,我們了解了RAR文件的整體思路。地球人都知道,解密時,肯定有個步驟是來判斷密碼的正確與否。而且,依據(jù)以往的經(jīng)驗,我們也許可以將某些判斷的點移動,那樣可以縮減破解的流程思路。那RAR的這一步在哪里?它把校驗放在了最后的一步。如果要秒破,我們該怎么做泥?至少我認為目前是不可能的。

我們從解密過程逆反過來看看:

1、CRC檢驗這一塊修改跳轉(zhuǎn)?

根本毫無意義,因為它已經(jīng)是最后一步了。你可以修改RAR文件頭的CRC值,你可以將它改得和你用任意密碼解壓出來的文件CRC值一樣,但你的文件根本就不是原來的文件了??赡芤呀?jīng)完全面目全非了。所以,對這一過程不可行。CRC校驗本身是不可逆的

2、那么把判斷提前到壓縮完的數(shù)據(jù)?

解壓的時候,有沒有什么來判斷壓縮數(shù)據(jù)是否正確?壓縮完的數(shù)據(jù),有沒有固定的特征,是否可以做為解壓的判斷,在這一步里,我們也無法找到有效的可用的固定特征。因為這一步涉及到RAR的壓縮算法。即使一個源文件,即使你的文件前一部分是完全相同的,只對后面的部分進行改過,那么壓縮完,數(shù)據(jù)也是完全一樣的。因為壓縮完的數(shù)據(jù)首先是一個壓縮表,后面是編碼。文件不一樣,掃描完的壓縮表也不一樣,編碼又是依賴于壓縮表,所以,這里頭找不到壓縮完的數(shù)據(jù)有任何的固定特征可以用來判斷的。

不管壓縮數(shù)據(jù)是什么樣的,Winrar都一如既往地進行解壓,沒有進行壓縮數(shù)據(jù)是否有效的判斷。

3、那假如我們破解了AES了泥?

由于AES只依賴于KEY,如果AES算法被破解了,我們知道了KEY,我們可以解出壓縮完的數(shù)據(jù),但是這里有一個問題,還有一個initVector密鑰,用來第一個16字節(jié)塊的異或,你沒有initVector參數(shù),你第一個16字節(jié)塊的數(shù)據(jù)便無法解得出來。

4、那就只能從第一步Hash的算法入手

即使你能破解hash,但hash后的結(jié)果泥?沒有結(jié)果,你怎么返推密碼。

所以綜上,發(fā)現(xiàn)rar的加密是由hash和AES兩種算法互相牽制,而兩種算法當前都無法破解,至少目前還沒有辦法秒破。

責任編輯:藍雨淚 來源: 紅黑聯(lián)盟
相關(guān)推薦

2013-08-12 12:36:10

2018-12-20 09:36:24

2017-06-01 16:42:16

2012-11-14 14:39:50

2024-06-24 08:39:45

2018-01-10 13:58:20

2019-10-11 09:45:19

代碼開發(fā)密碼

2024-04-15 10:16:38

2024-10-10 17:27:12

2010-12-03 11:43:51

2013-07-05 10:04:47

2011-12-09 10:17:07

2022-11-10 15:32:29

2010-08-30 14:10:08

2021-04-23 09:49:59

加密RSA密碼

2021-07-30 06:49:40

SSD內(nèi)存CPU

2022-05-22 21:23:10

前端監(jiān)控系統(tǒng)

2021-01-08 10:05:01

JavaSpring Boojar

2013-05-13 11:10:31

2014-11-19 09:15:35

點贊
收藏

51CTO技術(shù)棧公眾號