怎么对已经加密压缩文件进行解密

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么对已经加密压缩文件进行解密相关的知识,希望对你有一定的参考价值。

参考技术A

1、首先,在电脑上下载并安装RAR解密软件工具,在打开的软件工具中选择加密的rar文档,并设置好下图中的参数,之后点击开始按钮。

2、然后,等待破解,当界面提示密码已恢复的提示后,复制密码框中的密码

3、接着,双击打开电脑中要解压的加密文件,再点击解压到的图标。

4、之后,选择好解压后的文件存储路径后,再点击立即解压的按钮。

5、最后,粘贴上面复制的密码,再点击确定按钮即可。

python怎么对文件进行加密解密

使用python的pycrypto库AES的CBC模式加密和解密文件

AES (Advanced Encryption Standard),它是一种加密对称密码算法,可用于加密和解密信息 。
该算法可以使用 128、192 和 256 位的密钥,并对 128 位(16 字节)的数据块进行操作 。
由于我们可能要加密大于 128 位的数据,因此我们需要使用块(block)模式进行加密。下面的例子会加密source.txt文件并将source.txt文件解密到target.txt文件 。

安装pycryptodome,文章使用Python 3.6.8

pip3 install pycryptodome

Python脚本内容

#!/usr/bin/env python3
from Crypto.Util.Padding import pad, unpad
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

#打开需要加密的文件并将内容赋值给data
in_file = open("/root/work/study/ransomware/source.txt", "rb") 
data = in_file.read() 
in_file.close()
print('source content %s from source.txt' %data)
#使用随机字符生成AES相关的参数
key = get_random_bytes(32)
iv = get_random_bytes(16)

cipher1 = AES.new(key, AES.MODE_CBC, iv)
#使用AES.MODE_CBC对data进行加密并赋值给ct
ct = cipher1.encrypt(pad(data, 16))
print ('encrypted content is %s rewrite to source.txt ' %ct)
#将加密后的数据回写至文件source.txt,得到加密后的source.txt
out_file = open("/root/work/study/ransomware/source.txt", "wb")
out_file.write(ct)
out_file.close()
#秘钥和向量IV没动过,所以使用秘钥进行解密并解密回target.txt
cipher2 = AES.new(key, AES.MODE_CBC, iv)
#解密文件
pt = unpad(cipher2.decrypt(ct), 16)
print('decrypt content %s to target.txt' %pt)
out_file = open("/root/work/study/ransomware/target.txt", "wb") 
out_file.write(pt)
out_file.close()

测试代码

[root@BlogServer ransomware]# ls
crypt.py  source.txt
[root@BlogServer ransomware]# cat source.txt 
this is source code
[root@BlogServer ransomware]# python3 crypt.py 
source content b'this is source code\\n' from source.txt
encrypted content is b'A\\xb3\\xe4\\x8flq\\xfb)~r\\x1c\\xed\\xefEkm\\xd3\\xceL\\x07)8\\x9f\\xb1\\xd7\\xa1\\x8a\\x90L\\x8d<\\xfc' rewrite to source.txt 
decrypt content b'this is source code\\n' to target.txt
[root@BlogServer ransomware]# cat source.txt 
A??q??km?L)8±?L<[root@BlogServer ransomware]# 
[root@BlogServer ransomware]# cat target.txt 
this is source code

AES的参数

1. key length(密钥位数,密码长度)
2. key (密钥,密码)
3. IV (向量)
4. mode (加密模式)
5. padding (填充方式)

AES参数的意义

  1. key length(密钥位数,密码长度)
    AES128,AES192,AES256(128 位、192 位或 256 位)
    128位对应的是16个字节,所以部分平台库上,会使用16个字符或者长度为16的字符串来做密码。
  2. key (密钥,密码)
    key指的就是密码了,AES128就是128位的,如果位数不够,某些库可能会自动填充到128。
  3. IV (向量)
    IV称为初始向量,不同的IV加密后的字符串是不同的,加密和解密需要相同的IV。
  4. mode (加密模式)
    AES分为几种模式,比如ECB,CBC,CFB等等,这些模式除了ECB由于没有使用IV而不太安全,其他模式差别并没有太明显。
  5. padding (填充方式)
    对于加密解密两端需要使用同一的PADDING模式,大部分PADDING模式为PKCS5, PKCS7, NOPADDING。

 

以上是关于怎么对已经加密压缩文件进行解密的主要内容,如果未能解决你的问题,请参考以下文章

使用opensll加解密压缩文件

压缩文件密码怎么解

关于文件压缩解压缩与文件加密解密的项目

关于文件压缩解压缩与文件加密解密的项目

命令行的压缩解压缩以及加密解密

C# 文件压缩加解密