Care sunt câteva modalități bune de a cripta fișiere folosind Python?


Cel mai bun răspuns

Există multe opțiuni pentru a cripta un fișier în Python.

Utilizarea bibliotecii PyCrypto: PyCrypto este o colecție de funcții hash sigure și diferiți algoritmi de criptare. Mai întâi instalați PyCrypto pachetul executând această comandă pe CMD

pip install pycrypto

Codul pentru criptarea fișierelor utilizând algoritmul AES este prezentat mai jos

import os, random, struct

from Crypto.Cipher import AES

def encrypt\_file(key, in\_filename, out\_filename=None, chunksize=64*1024):

""" Encrypts a file using AES (CBC mode) with the

given key.

key:

The encryption key - a string that must be

either 16, 24 or 32 bytes long. Longer keys

are more secure.

in\_filename:

Name of the input file

out\_filename:

If None, ".enc" will be used.

chunksize:

uses to read and encrypt the file. Larger chunk

sizes can be faster for some files and machines.

chunksize must be divisible by 16.

"""

if not out\_filename:

out\_filename = in\_filename + ".enc"

iv = "".join(chr(random.randint(0, 0xFF)) for i in range(16))

encryptor = AES.new(key, AES.MODE\_CBC, iv)

filesize = os.path.getsize(in\_filename)

with open(in\_filename, "rb") as infile:

with open(out\_filename, "wb") as outfile:

outfile.write(struct.pack("

outfile.write(iv)

while True:

chunk = infile.read(chunksize)

if len(chunk) == 0:

break

elif len(chunk) \% 16 != 0:

chunk += " " * (16 - len(chunk) \% 16)

outfile.write(encryptor.encrypt(chunk))

Utilizarea PyAesCrypt: modul de criptare Python cu trei fișiere care utilizează AES256-CBC pentru a cripta și decripta fișiere

pip install pyAesCrypt

Exemplu de cod prezentat mai jos:

import pyAesCrypt

# encryption/decryption buffer size - 64K

bufferSize = 64 * 1024

password = "foopassword"

# encrypt

pyAesCrypt.encryptFile("data.txt", "data.txt.aes", password, bufferSize)

# decrypt

pyAesCrypt.decryptFile("data.txt.aes", "dataout.txt", password, bufferSize)

Biblioteca de criptografie Python poate fi, de asemenea, o opțiune bună pentru criptare

Răspuns

Cel mai simplu mod de a cripta fișiere cu python va fi să folosiți criptografie .

1. Instalare:

pip/pip3 install cryptography

2.Cod:

Vom avea un fișier video numit „ myvideo.mp4 ” pentru a-l cripta și a programului principal „main.py” .

"""

filename: main.py

author: SANDIPAN CHOWDHURY

purpose: Encrypting any file

This program is posted on Quora on 9th January, 2021

"""

#imports

from cryptography.fernet import Fernet

def sancrypt(filename):

"This function Encrypt the file"

key=Fernet.generate\_key()

key\_master=Fernet(key)

with open (filename,"rb") as f:

data=f.read()

encr\_data=key\_master.encrypt(data)

with open(filename+".sancrypted","wb") as f:

f.write(encr\_data)

with open(filename+".key","wb") as f:

f.write(key)

def desancrypt(filename,keyfilename):

"This function decrypt the filename with keyfilename"

with open(filename,"rb") as f:

encr\_data=f.read()

with open(keyfilename,"rb") as f:

key=f.read()

keymaster=Fernet(key)

decr\_data=keymaster.decrypt(encr\_data)

with open(filename.replace(".sancrypted",""),"wb") as f:

def main():

x=input("""

1. Encrypt

2. Decrypt

Enter a number?

""")

if x=="1":

filename=input("Enter a filename: ")

try:

sancrypt(filename)

print("File Encrypted.")

main()

except Exception as e:

print("File Encryption Failed")

print(str(e))

main()

elif x=="2":

filename=input("Enter filename with ".sancrypted" extension: ")

keyfile=input("Enter filename with ".key" extension: ")

try:

desancrypt(filename,keyfile)

print("File Decrypted.")

main()

except Exception as e:

print("Decryption Failed.")

print(str(e))

main()

else:

print("Invalid Input. Must be 1 or 2")

main()

if \_\_name\_\_=="\_\_main\_\_":

main()

Încercați întotdeauna să utilizați fișierul cheie corect pentru corect fișier de date, fie că eșuează. Este nevoie de aproximativ 30 de minute pentru a scrie acest program. Vă rugăm să susțineți răspunsul meu.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *