Paras vastaus
Tiedoston salaamiseen pythonissa on monia vaihtoehtoja.
PyCrypto-kirjaston käyttö: PyCrypto on kokoelma suojattuja hash-toimintoja ja erilaisia salausalgoritmeja. Asenna ensin PyCrypto paketti suorittamalla tämä komento CMD: llä
pip install pycrypto
AES-algoritmia käyttävän tiedostojen salauksen koodi näkyy alla
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, "
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))
PyAesCrypt: Pythonin kolmen tiedoston salausmoduuli, joka käyttää AES256-CBC: tä tiedostojen salaamiseen ja salauksen purkamiseen
pip install pyAesCrypt
Alla oleva esimerkkikoodi:
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)
Python-salauskirjasto voi olla myös hyvä vaihtoehto salaukseen
Vastaus
Helpoin tapa salata tiedostot pythonilla on käyttää salaus -moduuli.
1.Asennus:
pip/pip3 install cryptography
2.Koodi:
Meillä on videotiedosto nimeltä " myvideo.mp4 " salata se ja pääohjelma “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()
Yritä aina käyttää oikeaa avaintiedostoa oikein joko tiedosto epäonnistuu varmasti. Tämän ohjelman kirjoittaminen kestää noin 30 minuuttia. Hyvästä vastaukseni.