rar压缩文件加密过程及破解可行性分析v2
压缩包密码破解方法

压缩包密码破解方法
1.穷举法:通过尝试各种可能的字母、数字组合来破解密码,但这种方法显然存在资
源和时间开销的问题。
2.字典攻击:通过对密码的组成字符进行判断,然后尝试有可能的单词,以此来破解
密码,如果密码由字母组成,就要使用字典破解。
3.组合破解:使用已知信息结合猜测,比如用户的生日、姓名或其他信息,可以根据
这些信息破解密码,但前提是你知道密码中究竟有几个元素,这样才能逐一尝试。
4.强化技术:主要涉及密码轰炸、密码嗅探、密码穷举等全部或某部分的技术。
它们
可以收集到的信息缩小解密的范围,从而破解出经验比较可靠的密码。
最后,千万要记住:设置一个安全强度较高的密码,不要选择过于单一且易记的密码,否则很难避免被破解。
rar加密原理

rar加密原理一、简介RAR是一种广泛使用的压缩文件格式,由俄罗斯软件工程师Eugene Roshal开发。
RAR格式以其高压缩率和强大的功能而闻名,其中包括加密功能。
本文将深入探讨RAR加密原理及其实现方法。
二、RAR加密的基本原理RAR加密采用对称加密算法,即同一个密钥用于加密和解密。
当我们选择对一个RAR文件进行加密时,RAR工具会生成一个加密头,该加密头包含了加密算法的参数和密钥。
在加密文件的过程中,RAR会将文件分割成多个块,并对每个块进行独立的加密。
以下是RAR加密的基本原理:1. 密钥生成RAR使用密码学安全伪随机数生成器生成密钥。
在生成密钥时,会使用用户提供的密码和伪随机数发生器的种子来计算密钥。
2. 加密参数设置RAR加密还需要设置一些加密参数,它们决定了加密算法的行为。
这些参数包括加密模式、初始化向量和填充方式等。
3. 文件分块加密RAR会将文件划分为若干个固定大小的块,并使用加密算法对每个块进行加密。
块的大小将根据文件的大小和RAR的加密参数而变化。
4. 数据完整性校验为了确保加密文件的完整性,RAR加密还会在每个加密块末尾添加一个校验值。
校验值用于校验加密块是否被篡改。
5. 加密头RAR文件的开头包含了一个加密头,用于存储加密算法的参数和密钥。
这个加密头本身也是经过加密的,以确保只有正确的密钥才能解密它。
三、RAR加密的实现方法RAR加密的实现方法是通过调用RAR库中的加密函数实现的。
以下是一个简单的示例,展示了如何使用RAR库对文件进行加密:import rarfiledef encrypt_file(filename, password):rf = rarfile.RarFile(filename)rf.setpassword(password)rf.extractall()filename = "example.rar"password = "your_password"encrypt_file(filename, password)以上示例中,我们通过使用RAR库中的setpassword()函数来设置密码,并使用extractall()函数对文件进行解密。
[转贴] RAR“秒破”教程
![[转贴] RAR“秒破”教程](https://img.taocdn.com/s3/m/d9d25eca80eb6294dd886cdc.png)
[转贴]RAR“秒破”教程技术是一点点积累的,每天消化一点吧以前的东西,绝对的经典winrar加密分析原作者:天易love 转载来自:看雪学院一、加密文件大体结构:1、只加密文件内容时。
偏移14-15h是对其后一直到文件头结束处也就是加密数据开始处的校验值。
文件头中文件名后至文件头结束处是八字节的salt和5字节的未知区域(功能暂不详),加密数据后紧跟固定的结束字符串c4 3d 7b 00 40 07 00。
2、头和内容均加密时:偏移14-15h是salt2,尾部还出现一次。
紧跟的是加密的文件头(头中尾部是salt1和5字节的未知区域)和加密的文件内容(压缩后再进行aes加密),最后就是salt2和经过aes 加密的固定结束字符串。
注:生成salt的函数调用了2次。
二、简述salt算法:1、由SystemTime得到FileTime;2、分别对FileTime的两个DWORD进行hash_process;3、hash_final后得到的digest的最前面的两个DWORD就是salt。
三、加密过程:1、先将salt接在unicode形式的密码后再用hash_final生成aesinit、aeskey、10轮round key。
2、压缩好的文件内容分组长为每一个分组128bit,开始加密前先与前一个分组xor生成一个state参与aes加密,第一个分组与aesinit进行xor。
四、隐患:由于salt是随机产生,因而aeskey和round key也是随机的,文件加密结果就是随机的。
这个变量的使用给我们提供了利用空间。
插一句,假如由加密后数据逆推得到aeskey但由于是经过hash得到,这是不可逆的,所以不可能知道密码。
唯一可行就是让其加密过程中自己将密码保存到salt处最好用可逆向的加密算法处理一下,这不会有任何影响,只是让它多了层含义。
以上是我的一点肤浅的认识,望批评指正!天易lovewinrar加密“秒破”原作者:天易love 转载来自:看雪学院第一步:用winhex将下面数据生成rar格式的文件。
压缩包加密条件

压缩包加密条件咱们来聊聊压缩包加密这事儿。
你有没有过这种情况,电脑里有些文件就像自己的小秘密,不想让别人轻易看到呢?这时候啊,压缩包加密就像是给这些小秘密上了一把锁。
就好比你有个装满宝贝的小盒子,加密就像是给这个盒子加了个带密码的锁,只有知道密码的人才能打开。
那怎么给压缩包加密呢?不同的压缩软件操作还不太一样呢。
拿WinRAR这个常见的压缩软件来说吧。
你选中要压缩的文件或者文件夹之后,在压缩的选项里,就会有个地方让你设置密码。
这密码可不能随便设啊,要是设得太简单,就像你家门锁用个1234当密码,那小偷一下子就打开了。
最好是设成那种数字、字母,再加上符号的组合,比如像“aB@1234#”这种。
这密码就像是保护你秘密的卫士,强一点才能守得住。
还有7 - Zip这个软件也挺好用的。
它加密压缩包的时候也很方便。
当你创建压缩包的过程中,就会有个加密的选项跳出来。
这时候你输入密码,就像在给你的宝藏画一个只有你知道的魔法阵,别人没有密码就进不去这个魔法阵,也就看不到你的宝藏了。
加密之后可千万别把密码给忘了啊。
这要是忘了密码,那就好比你把宝藏的钥匙弄丢了,你自己也进不去了。
我有个朋友就干过这种事儿,他给工作上很重要的文件压缩加密了,结果密码设得太复杂,自己过了几天就忘了。
那叫一个着急啊,就像热锅上的蚂蚁,到处找办法想打开那个压缩包。
最后没办法,文件只能重新做,那可费了好大的劲儿呢。
你可能会问,为啥要加密压缩包啊?这原因可多了去了。
比如说你有一些个人隐私的照片或者文档,不想被别人不小心看到或者恶意翻看。
又或者是公司的机密文件,要是被竞争对手拿到了,那可就糟了。
这加密压缩包就像是一道防火墙,把那些不该看的人挡在外面。
再说说加密的强度。
就像建房子,你想建得结实一点,就得用更好的材料和更牢固的结构。
加密强度高的压缩包,就像一座坚不可摧的堡垒。
那些简单的加密可能就像用泥巴糊的墙,很容易就被攻破了。
不过呢,加密强度高的话,有时候可能在解压的时候会稍微慢一点,就像你开一个很牢固的保险柜,肯定要多花点时间来开锁一样。
Winrar、word、dsc加密解密

实验报告
(2013—2014学年第1学期)
课程名称:网络安全实验
班级:
学号:
姓名:
任课教师:
计算机与信息科学学院
实验报告
实验名称
Winrar、word、dsc加密解密
指导教师
实验类型
操作
实验学时
4要求
通过使用WORD、WINRAR、DSC软件对文件进行加密解密,从而达到文件安全的提高。实验要求是掌握这些基本的加密解密过程,了解各种算法的原理,如AES,RSA等。
3、设置自解压:
4、设置完成,打开后提示输入密码:
Discrypt设置加密解密:
1、打开主程序,点击password,设置密码,设置模式:decrypt(解密)和encrypt(加密),然后打开需要加密的文件:
2、加密前后对比:
加密前加密后
总结:
这些加密的方式虽然能避免一般破解,dscrypt加密解密稍微更复杂一些,但是对于一些电脑高手来说只是一点小case,所以说,在学习完这些之后我们应该在学习其他的一些更高级的加密解密。
二、实验仪器和器材
计算机一台(装有WORD、WINRAR、DSC软件)
三、实验原理、内容及步骤
(一)、实验原理:
Word加密解密原理:
利用word软件自身提供的加密技术对文件进行加密,加密算法可以选择多种进行。比如常用的AES与RSA加密算法,从而达到保护文档的目的。
Winrar加密解密原理:
利用winrar自带的解密加密功能对文件文档进行加密解密,然后在进行封装,可以自定义成为EXE从而生成自解压文件,替换图标,达到隐藏目的,提高安全性。
五、指导教师评语
成绩
压缩包破解密码方法

压缩包破解密码方法【实用版3篇】目录(篇1)1.压缩包密码破解的背景和原因2.压缩包密码破解的方法3.压缩包密码破解的注意事项4.压缩包密码破解的工具推荐5.压缩包密码破解的法律风险与道德问题正文(篇1)一、压缩包密码破解的背景和原因在互联网时代,信息传播速度极快,各种文件资料的共享和传输也变得越来越便捷。
为了保护文件的隐私和安全,很多用户在发送压缩文件时,会选择设置密码。
然而,这也给一些需要破解压缩包密码的用户带来了困扰。
那么,压缩包密码破解的方法有哪些呢?二、压缩包密码破解的方法1.穷举法:即通过尝试所有可能的密码组合,直到找到正确的密码。
这种方法适用于密码长度较短、字符集较小的情况。
2.暴力破解法:通过计算机程序不断尝试密码,直到找到正确的密码。
这种方法适用于较长的密码,但需要较长的破解时间。
3.字典攻击法:通过将常见的密码、词汇加入字典文件,让程序尝试这些密码进行破解。
这种方法适用于猜测密码的常见设置。
4.彩虹表法:将所有可能的密码预先计算出来,并存储在彩虹表中。
当需要破解密码时,直接在彩虹表中查找即可。
这种方法适用于预先知道密码长度和字符集的情况。
三、压缩包密码破解的注意事项1.破解压缩包密码可能需要较长时间,用户需耐心等待。
2.破解过程中,请勿关闭破解程序,以免影响破解进度。
3.选择合适的破解方法和工具,以提高破解效率。
四、压缩包密码破解的工具推荐1.Advanced Archive Password Recovery2.John the Ripper3.fcrackzip4.RAR Password Unlocker五、压缩包密码破解的法律风险与道德问题1.破解他人加密文件可能涉及侵犯他人隐私权,用户需谨慎操作。
2.若用于非法目的,用户需承担相应的法律责任。
目录(篇2)1.压缩包破解密码方法概述2.常见压缩包格式及密码类型3.破解压缩包密码的常用方法4.破解压缩包密码的软件工具5.预防压缩包密码被破解的措施正文(篇2)一、压缩包破解密码方法概述压缩包破解密码方法是指通过一定的技术手段,解开被设置密码保护的压缩包文件。
文件的加密解密压缩和压缩文件密码的管理.
日常生活中我们通常会分享一些个人视频,但处于隐私考虑,我们会想到给文件加密,嗯,不错,但是我们常用的的视频格式是不支持文件加密的,怎么办?看到网上一些网站有时分享软件时会将软件打包成RAR或ZIP压缩格式并加密,只有访问网站源地址才能获得密码,即提高了网站访问量又将一些不太好找的软件分享给大家。
那么我们就依照这个思路用压缩软件压缩视频并加密后上传到各大网盘分享给朋友,这样不仅间接的将视频进行了加密,保护了我们的个人隐私,更是将较大的视频文件批量的进行了分享。
但很多人只进行过文件的解压/压缩,并不知道如何加密或者是并不会进行灵活的加密密码管理,这里笔者就像大家介绍一下如何给文件加密压缩并管理密码。
一般的常规方法是选定要压缩的文件并右击,在弹出的菜单中选择“添加到压缩文件”弹出压缩选项,1.选定压缩格式 2.点击“设置密码”在这里笔者要说一下,如果选定RAR格式,在解压或打开时不会显示包内文件名,而选定ZIP格式,在解压或打开时会显示包内文件名,所以笔者建议大家如果对文件的保密程度要求较高那么就选RAR格式,因为ZIP格式不支持文件名加密。
设置好密码点击“确定”等待文件压缩好,这样就完成了文件的压缩加密当然,我们有时要对没有加密的压缩文件设定密码,需要注意的是下列方法需要使用好压软件,并且文件格式为ZIP(RAR文件不支持),笔者上述使用的WINRAR无法进行下列操作,大家需要用好压进行操作。
先打开这个压缩文件,点击“文件”-“密码”弹出窗口后选择“密码”选项卡,点击“设置新的密码”设置好密码然后点击“确定”即可如果你想把压缩包中的密码清除掉,则选“清除已有密码”,然后点“确定”,会弹出提示让你输入之前设置的密码,输入后确定即可清除掉密码下面笔者再介绍一下在WINRAR中的文件压缩密码管理首先打开WINRAR,然后选择“选项”-“设置”点击“压缩”选项卡,选择“创建默认配置”点击“设置密码”输入密码,点击“确定”遇到提示点击“是”这样每次使用WINRAR压缩文件时如不另外设置新密码就会按照这个默认的配置密码对文件进行加密压缩。
破解压缩文件密码方法
破解压缩文件密码方法随着互联网的发展,压缩文件在我们的日常生活中扮演着越来越重要的角色。
无论是在工作中发送文件,还是在个人生活中存储照片和视频,我们都会使用到压缩文件。
然而,有时候我们会遇到一个问题,那就是忘记了压缩文件的密码。
那么,有没有什么方法可以破解压缩文件的密码呢?首先,我们需要明确一点,破解压缩文件密码是一项技术活,需要一定的计算机知识和技巧。
在进行破解之前,我们需要明确自己的目的和合法性。
如果你是忘记了自己设置的密码,那么破解是合法的。
但是,如果你试图破解他人的压缩文件密码,那么这是非法的行为,是侵犯他人隐私的行为,是不被允许的。
那么,对于合法的破解压缩文件密码,我们可以尝试以下几种方法。
第一种方法是使用暴力破解。
这种方法是最常见的破解密码的方法之一。
它通过尝试所有可能的密码组合来破解压缩文件的密码。
这种方法需要耗费大量的时间和计算资源,因此只适用于密码比较简单的情况。
如果密码比较复杂,那么暴力破解的时间可能会非常长,甚至无法破解成功。
第二种方法是使用字典攻击。
字典攻击是一种基于预先准备好的密码字典的破解方法。
密码字典是一个包含常见密码和常见密码组合的列表。
字典攻击通过逐个尝试密码字典中的密码来破解压缩文件的密码。
这种方法相对于暴力破解来说,速度更快,因为它不需要尝试所有可能的密码组合。
然而,如果密码不在字典中,那么字典攻击也无法破解成功。
第三种方法是使用密码破解工具。
有一些专门的密码破解工具可以帮助我们破解压缩文件的密码。
这些工具通常使用一些高级的密码破解算法,可以提高破解的效率。
然而,这些工具并不是万能的,它们也无法保证一定能够破解成功。
因此,在使用这些工具之前,我们需要对其进行充分的了解和评估。
最后,我们还可以尝试一些其他的方法。
比如,我们可以尝试找回密码的提示问题,或者联系压缩文件的创建者寻求帮助。
有时候,这些方法可能会给我们带来一些启示,帮助我们找回密码。
总之,破解压缩文件密码是一项技术活,需要一定的计算机知识和技巧。
压缩文件解压密码破解方法
压缩文件解压密码破解方法
压缩文件是一种常见的文件格式,它可以将多个文件或文件夹压缩成一个文件,以便更方便地进行传输或备份。
然而,有些人在压缩文件时会设置密码保护,以防止未经授权的访问。
如果你忘记了压缩文件的密码,该怎么办呢?
以下是几种常见的压缩文件解压密码破解方法:
1. 使用密码字典
密码字典是一组常用密码和短语的列表,它可以被用来破解压缩文件密码。
如果你认为密码不是非常难猜,你可以下载一些密码字典来尝试破解密码。
然而,这种方法在密码较为复杂时并不可行。
2. 使用暴力破解工具
暴力破解工具是专门用来破解密码的软件,它可以通过不断尝试各种可能的密码组合来破解密码。
这种方法可能需要一些时间,但是在密码比较简单时会比较有效。
3. 找回密码
有些压缩软件有找回密码的功能,可以通过回答一些预设的问题或提供一些相关信息来找回密码。
如果你设置了备份或恢复文件,可能可以通过这些文件找回密码。
需要注意的是,密码破解是一种侵入行为,如果你没有合法的权限,那么这种行为是违法的。
在任何情况下,我们都应该尊重他人的隐私和权利,不要进行不当的操作。
- 1 -。
压缩包加密原理
压缩包加密原理介绍在现代数字化的世界中,我们经常需要将文件进行压缩和加密以保护其内容的安全性。
压缩包加密就是一种常见的方式,它将文件或文件夹打包成一个单独的文件,同时对其进行加密保护。
本文将深入探讨压缩包加密的原理及相关技术。
压缩算法在了解压缩包加密原理之前,我们先来了解一下常用的压缩算法。
压缩算法有许多种,其中两种最常见的是DEFLATE算法和LZ77算法。
DEFLATE算法DEFLATE算法是一种无损压缩算法,它通过利用重复的数据块和字典技术来压缩文件。
具体来说,DEFLATE算法由两个步骤组成,分别是LZ77算法和Huffman编码。
LZ77算法LZ77算法主要利用重复的数据块来减小文件的大小。
它通过建立一个滑动窗口,窗口中包含了之前出现过的数据块,然后通过将数据块替换为指向窗口中相同数据块的指针来实现压缩。
Huffman编码Huffman编码是一种可变长度编码,它通过将频率较高的字符赋予较短的编码,从而减小整体文件的大小。
在DEFLATE算法中,Huffman编码被用于对LZ77算法产生的指针和字符进行编码。
LZ77算法LZ77算法是一种广泛应用于压缩领域的无损压缩算法。
它通过识别和消除数据中的冗余来减小文件的大小。
压缩包加密原理压缩包加密是在对文件进行压缩的基础上,再对压缩文件进行加密保护。
下面将介绍常用的几种压缩包加密原理。
密码加密最简单的压缩包加密方式是使用密码加密。
用户可以设置一个密码,然后通过密码对压缩文件进行加密。
在解压缩时需要输入正确的密码才能解密文件。
对称加密对称加密是一种常见的压缩包加密方式。
它使用相同的密钥对文件进行加密和解密。
对称加密算法有许多,如DES、AES等。
在对文件进行压缩时,先使用对称加密算法对文件进行加密,然后再将加密后的文件进行压缩。
非对称加密非对称加密也是一种常用的压缩包加密方式。
它使用一对密钥,分别是公钥和私钥。
公钥用于对文件进行加密,而私钥用于解密文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Rar压缩文件加密过程及破解可行性分析1.rar压缩文件简介Rar是一种目前广泛使用的文件压缩格式,它能够实现对文件的压缩、加密和分块等功能。
Rar格式的压缩文件以.rar后缀结束,其他常见的文件压缩格式还有zip格式。
与ZIP 格式压缩文件相比,同样是无损数据压缩,RAR文件通常压缩比要高,但是压缩速度较慢。
因为RAR文件头也要占据一定空间,在数据压缩余地不大时,压缩过的文件可能比原文件要大。
RAR的一个主要优点是可以把文件压缩目标分割到多个文件,并且很容易从这样的分割的压缩文件解压出源文件。
另外,RAR也支持紧缩格式,把所有文件压缩到同一个数据区以加大压缩比,代价是解压一个单独的文件时必须解压其前面的所有文件。
RAR中也可以加入冗余的修复信息,在文件损坏但是修复信息足够完好时可以对压缩包进行修复。
很多工具软件都可以用来产生Rar格式的压缩文件,但目前最常用的是Winrar,软件截图如下图1所示。
图1 Winrar工具截图目前Rar压缩格式的最新版本是5.30,并且不同版本产生的压缩文件的格式会有所不同。
在上图1“压缩文件格式”选项中选择“RAR”表示产生的压缩文件采用Rar 4.0版本压缩文件格式,而“RAR5”表示采用Rar 5.0版本压缩文件格式。
考虑到这两种压缩格式目前都在广泛使用,在后面的介绍中我们会对这两种压缩文件的加密过程分别进行介绍,但重点以Rar5.0压缩格式为主。
2.Rar压缩文件格式Rar 5.0版本的压缩文件格式如下图2所示。
一个压缩文件由许多不同的块(头)组成,浅绿色部分表示可选块,紫色部分是必选块。
下面分别对主要块的功能进行简要介绍。
图2 Rar 5.0压缩文件格式Self-extracting module :可选块,表示压缩文件是否可以自行解压缩。
当在使用Winrar 对文件进行压缩时,如果选择了“创建自解压格式压缩文件”选项,生成的压缩文件则是一个可执行文件,不需要专门的压缩工具来进行解压缩操作,执行该文件则会对压缩的文件进行解压缩,还原出被压缩的文件。
RAR 5.0 signature:签名块,该块的作用是区分压缩文件的版本。
对于RAR 5.0版本,该块共有8个字节,内容为0x52 0x61 0x72 0x21 0x1A 0x07 0x01 0x00。
如果是4.0版本,则该块长度是7个字节:0x52 0x61 0x72 0x21 0x1A 0x07 0x00。
Archive encryption header:加密头,该头保存解密压缩文件所需要信息,包括对用户输入密码的验证、对加密数据解密等方面的信息。
下面对该头的各个字段进行具体说明。
Main archive header:主头,包含整个压缩文件的一些基本属性信息,各个字段的含义如下表所示。
File header:文件头,用来具体描述被压缩的文件各方面的信息,每个被压缩的文件对应一个文件头,各字段含义如下表所示。
文件头中的Data area保存的就是压缩的文件数据。
如果选择了对文件内容加密,那么Data area中保存的就是经过压缩、加密后的数据,并且文件头中的Extra area区域就会包含一个加密记录块,用来保存该加密文件对应的加密相关元数据信息,加密记录块的结构和End of archive marker:结尾标记头,该头是压缩文件的结束标记。
解压过程中解压工具不会读取和处理结尾标记头后面的任何信。
该块的各个字段如下表所示。
上面我们仅仅对压缩文件格式中一些主要的块(头)进行了描述和解释,其他的可选块由于和文件的加密过程无关因此这里不做介绍,如果读者感兴趣可以自行参考RAR 5.0 archive format。
3.Rar压缩文件加密过程在采用Winrar对文件进行压缩和加密时,根据选择使用RAR“压缩文件格式”的不同以及是否选中“加密文件名”选项(如图3所示),文件的加密过程会有所不同,加密后生成的文件格式也会存在差别。
在不考虑ZIP压缩格式和其他与加密过程无关的选项的情况下,使用Winrar对文件进行压缩时一共有4种不同选择:RAR压缩格式,不加密文件名;RAR5压缩格式,不加密文件名;RAR压缩格式,加密文件名;RAR5压缩格式,加密文件名。
这里主要以选择“RAR5压缩格式,不加密文件名”情况为例,详细介绍其加密和解密过程,然后对其他不同选择下的加解密过程进行说明。
图3 与winrar加密相关的选项3.1 RAR5压缩格式,不加密文件名选择“RAR5压缩格式,不加密文件名”情况下文件的加密过程如下图4所示。
如果将Winrar软件看成一个功能黑盒,它接受的输入是用户提供的密码和需要加密的原文件,然后输出加密后的压缩文件。
在Winrar软件内部,具体的加密过程按如下步骤进行。
1)初始化操作。
随机产生16字节长度的盐salt、16字节长度的初始化向量IV,设置count=32768,KeyLength=256。
2)进行PBKDF2运算。
以用户输入密码password和步骤1)中的salt、count、KeyLength 作为PBKDF2函数的输入参数进行运算,产生32字节的AES加密密钥Key。
即Key = PBKDF2(salt, password, count, KeyLength)。
请自行查阅PBKDF2算法相关介绍。
areaData CRC32图4 Rar5压缩格式下文件内容的加密过程3) 产生HashKey 。
在步骤2)中的PBKDF2算法计算结果的基础上,额外增加16次迭代计算,产生32字节长度的HashKey ,该密钥用于在后期产生文件内容的校验值。
4) 产生PSWcheck 。
在步骤3)HashKey 的基础上,额外增加16次迭代计算,产生32字节长度的PswCheckValue ,对PswCheckValue 进行类似异或操作1后赋值给8字节长度的PSWcheck ,该值随加密文件一起保存,作用是在解密时实现对用户密码的验证。
注1:【PSWcheck[i] = PswCheckValue[i]^ PswCheckV alue[i+8]^……】 5) 计算文件校验值。
对文件进行CRC 计算,得到4字节长度的CRC 校验值value 。
将value作为HMAC-SHA256函数的“消息”参数,HashKey 作为HMAC-SHA256函数的“密钥”参数,产生32字节长度的消息摘要digest ,即digest = HMAC-SHA256(HashKey ,value )。
然后对digest 进行类似异或操作2,得到4字节长度的Data CRC32校验值。
Data CRC32校验值随加密文件一起保存,既能实现对用户密码的验证,也能实现对文件内容的校验。
文件内容校验也可以采用其他校验方式,但默认情况下是CRC32校验。
注2:【for (int I=0;I<32;I++) CRC32^=digest[I] << ((I & 3) * 8)】 6) 对文件内容进行压缩。
7) 压缩后内容加密。
以IV 为AES-256初始化向量、Key 为加密密钥,对步骤6)中压缩后的文件内容进行AES-256加密,得到加密后的内容。
8) 按照1)—7)相同的步骤对所有文件进行压缩和加密,并按照图2所示文件格式进行保存从而得到压缩后的文件。
在经过压缩和加密过程后生成的压缩文件中,需要保存salt 、count 、IV 、PSWcheck 和Data CRC32值。
其中Data CRC32保存在文件头,salt 、count 、IV 、PSWcheck 保存在文件头extra data 中的文件加密记录中,在解密阶段需要读取这些域对密码进行验证。
解密过程基本上是文件加密过程的逆过程,对加密压缩文件的解密过程如下。
1) 读取加密压缩文件的标记和主头部分,确定RAR 版本。
2) 读取文件头。
读取第一个文件对应的文件头,获取Salt 、Count 、PSWcheck 、IV 和DataCRC32值。
3)进行PBKDF2计算。
以Salt、Count、用户密码password和KeyLength为参数进行PBKDF2计算,得到文件解密密钥Key、PSWcheck和HashKey。
该步骤和加密过程中2)、3)、4)步骤相同,详见加密过程。
4)用户密码验证。
将步骤3)中产生的PSWcheck值和步骤1)中从文件读取的PSWcheck 值进行比较,如果相同,则说明验证通过,继续5);不同则表明用户输入密码错误,用户重新输入密码转3),否则结束。
5)文件解密。
根据初始化向量IV和3)中产生的解密密钥Key,对文件1加密后的内容进行解密,得到压缩后的文件内容。
6)文件解压。
对5)中得到的文件内容进行解压缩,得到文件1原始内容,即原文件。
7)对原文件进行CRC计算,将计算得到的校验值作为HMAC-SHA256的输入消息,HashKey作为密钥,产生消息摘要。
然后对消息摘要进行类似异或运算,得到文件的校验值CRC32。
详见加密过程步骤5)。
8)将7)中计算得到的CRC32值和步骤2)中读取的Data CRC32进行比较,相同则说明用户密码正确并且文件没有损坏,转9);否则说明文件损坏,退出。
9)依次对所有文件重复进行2)—8),直到所有文件均被解压。
以上步骤中对压缩文件中各个域的读取参考第2节中对文件格式的介绍。
3.2 RAR5压缩格式,加密文件名图5 压缩文件在不加密文件名下的解压缩操作在压缩过程中,如果不选择“加密文件名”选项,这样产生的压缩文件用户即使不知道压缩文件的密码,也可以查看压缩文件中的包含的文件名称、文件大小、修改时间等信息,如图5所示。
显然,有时候我们对文件的保密要求比较高,并不想让非授权用户获得这些信息,因此就需要对这些文件元数据进行加密。
由于这些信息保存在压缩文件的主头、文件头等元数据块中,因此要加密文件名等相关信息,就需要对这些部分元数据信息进行加密。
事实上,对这些信息的加密是通过在压缩文件格式中实现一个加密头,然后再利用加密头加密这部分元数据信息达到的。
前面介绍过加密头是可选的,加密头的作用正在于此,用来实现对文件名等信息的加密。
因此,对于“加密文件名”情况下,对文件的加密过程分为两个阶段,第一阶段是利用文件头中的加密记录实现对文件内容的加密,然后利用加密头实现对主头、文件头等元数据块的加密,下图6简要显示了这两阶段加密过程。
图6 文件的两阶段加密过程对于利用文件头中的加密记录去加密数据部分,该过程和前面的介绍不加密文件名选择下的过程是一样的,这里不再赘述,这里主要对加密头加密元数据块的过程进行介绍。
图7显示了加密头对主头、文件头等元数据块的加密过程。