怎么对已经加密压缩文件进行解密
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么对已经加密压缩文件进行解密相关的知识,希望对你有一定的参考价值。
参考技术A1、首先,在电脑上下载并安装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参数的意义
- key length(密钥位数,密码长度)
AES128,AES192,AES256(128 位、192 位或 256 位)
128位对应的是16个字节,所以部分平台库上,会使用16个字符或者长度为16的字符串来做密码。 - key (密钥,密码)
key指的就是密码了,AES128就是128位的,如果位数不够,某些库可能会自动填充到128。 - IV (向量)
IV称为初始向量,不同的IV加密后的字符串是不同的,加密和解密需要相同的IV。 - mode (加密模式)
AES分为几种模式,比如ECB,CBC,CFB等等,这些模式除了ECB由于没有使用IV而不太安全,其他模式差别并没有太明显。 - padding (填充方式)
对于加密解密两端需要使用同一的PADDING模式,大部分PADDING模式为PKCS5, PKCS7, NOPADDING。
以上是关于怎么对已经加密压缩文件进行解密的主要内容,如果未能解决你的问题,请参考以下文章