Advertisement
Guest User

sha1.py

a guest
Mar 1st, 2024
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.95 KB | None | 0 0
  1. import sys, os, time
  2. import subprocess as sp
  3. import hashlib
  4.  
  5. def measure_time(func):
  6.     def f(*args):
  7.         t0 = time.time()
  8.         print('    SHA1:', func(*args))
  9.         print('    Time:', time.time() - t0, 's')
  10.     return f
  11.    
  12. @measure_time
  13. def openssl_sha1(file):
  14.     args = ('openssl', 'sha1', file)
  15.     ossl = sp.run(args, capture_output=True)
  16.  
  17.     if ossl.returncode == 0:
  18.         stdout = ossl.stdout.decode()
  19.         _, sha1 = stdout.rsplit(maxsplit=1)
  20.         return sha1
  21.    
  22.     stderr = ossl.stderr.decode()
  23.     args_str = ' '.join(args)
  24.     msg = f'"{args_str}" returned {ossl.returncode}:\n{stderr}'
  25.     raise Exception(msg)
  26.  
  27. @measure_time
  28. def hashlib_sha1(file):
  29.     sha1 = hashlib.sha1()
  30.     with open(file, 'rb') as f:
  31.         while chunk := f.read(1048576):
  32.             sha1.update(chunk)
  33.         return sha1.hexdigest()
  34.  
  35. print('OpenSSL:')
  36. openssl_sha1(sys.argv[1])
  37.  
  38. print('hashlib:')
  39. hashlib_sha1(sys.argv[1])
  40.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement