Python을 사용하여 파일을 암호화하는 좋은 방법은 무엇인가요?


최상의 답변

python에서 파일을 암호화하는 데는 많은 옵션이 있습니다.

PyCrypto 라이브러리 사용 : PyCrypto는 보안 해시 함수 및 다양한 암호화 알고리즘 모음입니다. 먼저 PyCrypto를 설치합니다. CMD에서이 명령을 실행하여 패키지화

pip install pycrypto

AES 알고리즘을 사용한 파일 암호화 코드는 다음과 같습니다.

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))

PyAesCrypt 사용 : AES256-CBC를 사용하여 파일을 암호화 및 해독하는 Python 3 개 파일 암호화 모듈

pip install pyAesCrypt

아래에 표시된 샘플 코드 :

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 Cryptography 라이브러리도 암호화를위한 좋은 옵션 일 수 있습니다.

Answer

python으로 파일을 암호화하는 가장 쉬운 방법은 암호화 모듈.

1. 설치 :

pip/pip3 install cryptography

2. 코드 :

“myvideo.mp4”

라는 이름의 동영상 파일이 생성됩니다. span>과 기본 프로그램 “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()

항상 올바른 키 파일을 사용하세요. 데이터 파일 중 하나라도 실패합니다. 이 프로그램을 작성하는 데 약 30 분이 걸립니다. 내 답변을 찬성 해주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다