Jump to content
Ford.B

Como criptografar vários arquivos no linux usando os módulos AES e glob no python 2.7?

Recommended Posts

Ford.B

Segue o código...

 

import os, random
from Crypto.Cipher import AES
import glob

def encrypt(filename):
	chunksize = 64 * 1024
	output_file = "(encrypted)" + filename
	filesize = str(os.path.getsize(filename)).zfill(16)
	#key = "{: <32}".format(filename).encode("utf-8")
	IV = ""

	for i in range(16):
		IV += chr(random.randint(0, 0xFF))

	encryptor = AES.new(AES.MODE_CBC, IV)

	with open(filename, "rb") as infile:
		with open(output_file, "wb") as outfile:
			outfile.write(filesize)
			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))

os.chdir('/home/usuario/Documentos/Teste')
for f in glob.glob('*'):
	encrypt(f)

 

O error que aparece:

TypeError: argument 1 must be string or read-only buffer, not int

 

Share this post


Link to post
Share on other sites
pwseo

Podes dar mais algum contexto ao erro? Seguramente que o interpretador está a dar-te informação mais detalhada, nomeadamente o número da linha em que ocorre o erro ou a função que está a ser invocada. Não podes esperar que todos instalemos o PyCrypto para tentarmos reproduzir o teu código nas nossas máquinas.

O erro parece simples: estás a utilizar um número inteiro num local onde se espera uma string ou buffer só de leitura.

Fico a aguardar mais detalhes teus.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.