amv1991

Hash de arquivos

Jan 22nd, 2021
822
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import hashlib
  2.  
  3. #O tamanho do buffer determina quantos bytes serão lidos por vez
  4. bufferSize = 65536  #65536 bytes equivalem a 64 kb, o tamanho é facultativo
  5.  
  6. #   PS: O tamanho faz a diferença na hora de fazer o hash de arquivos grandes,
  7. #       por isso foi utilizado um buffer
  8.  
  9. #Apenas declara os objetos dos tipos de hash
  10. md5 = hashlib.md5()
  11. sha1 = hashlib.sha1()
  12. sha224 = hashlib.sha224()
  13. sha256 = hashlib.sha256()
  14. sha384 =hashlib.sha384()
  15. sha512 = hashlib.sha512()
  16.  
  17. #Abre o arquivo apenas para leitura
  18. arquivo = open(input("\nEscolha um arquivo: "), 'rb')
  19.  
  20. #Atualiza todos os hashes ao mesmo tempo, senão necessitaríamos retornar o ponteiro do arquivo para o ponto inicial
  21. while True:     #Laço para ler os bytes do arquivo e atualizar os hashes
  22.     data = arquivo.read(bufferSize)   #Lê do arquivo a quantidade de bytes determinada
  23.     if not data:    #Se não houver mais dados a serem lidos ele sai do laço
  24.         break
  25.     md5.update(data)    #Atualiza os hashes
  26.     sha1.update(data)
  27.     sha224.update(data)
  28.     sha256.update(data)
  29.     sha384.update(data)
  30.     sha512.update(data)
  31.  
  32. print("\nHashes do arquivo:")
  33. print("   MD5: {0}".format(md5.hexdigest()))
  34. print("  SHA1: {0}".format(sha1.hexdigest()))
  35. print("SHA224: {0}".format(sha224.hexdigest()))
  36. print("SHA256: {0}".format(sha256.hexdigest()))
  37. print("SHA384: {0}".format(sha384.hexdigest()))
  38. print("SHA512: {0}".format(sha512.hexdigest()))
  39.  
  40. arquivo.close()     #Fecha o arquivo
  41.  
  42. input("\nAperte ENTER para sair...")
RAW Paste Data