def __init__(self): # Define Supported hashes hashes = dict() hashes['md2'] = lambda x: self._get_md2_hash(x) hashes['md4'] = lambda x: self._get_hashlib_hash('md4', x) hashes['md5'] = lambda x: hashlib.md5(x).hexdigest() hashes['sha'] = lambda x: self._get_hashlib_hash('sha', x) hashes['sha1'] = lambda x: hashlib.sha1(x).hexdigest() hashes['sha256'] = lambda x: hashlib.sha256(x).hexdigest() hashes['sha224'] = lambda x: hashlib.sha224(x).hexdigest() hashes['sha384'] = lambda x: hashlib.sha384(x).hexdigest() hashes['sha512'] = lambda x: hashlib.sha512(x).hexdigest() hashes['sha3_224'] = lambda x: sha3.sha3_224(x).hexdigest() hashes['sha3_256'] = lambda x: sha3.sha3_256(x).hexdigest() hashes['sha3_384'] = lambda x: sha3.sha3_384(x).hexdigest() hashes['sha3_512'] = lambda x: sha3.sha3_512(x).hexdigest() hashes['mmh2'] = lambda x: str(mmhash.get_hash(x)) hashes['mmh2_unsigned'] = lambda x: str(mmhash.get_unsigned_hash(x)) hashes['mmh3_32'] = lambda x: str(mmh3.hash(x)) hashes['mmh3_64_1'] = lambda x: str(mmh3.hash64(x)[0]) hashes['mmh3_64_2'] = lambda x: str(mmh3.hash64(x)[1]) hashes['mmh3_128'] = lambda x: str(mmh3.hash128(x)) hashes['ripemd160'] = lambda x: self._get_hashlib_hash('ripemd160', x) hashes['whirlpool'] = lambda x: self._get_hashlib_hash('whirlpool', x) hashes['blake2b'] = lambda x: pyblake2.blake2b(x).hexdigest() hashes['blake2s'] = lambda x: pyblake2.blake2s(x).hexdigest() hashes['crc32'] = lambda x: str(zlib.crc32(x)) hashes['adler32'] = lambda x: str(zlib.adler32(x)) self._hashes = hashes self.hashes_and_checksums = self._hashes.keys() self.supported_hashes = HASHES
def SHA3_384(filePath): # make a hash object h = sha3.sha3_384() with open(filePath, 'rb') as fh: # loop till the end of the file chunk = 0 while chunk != b'': # read only 1024 bytes at a time chunk = fh.read(1024) h.update(chunk) # return the hex representation of digest return h.hexdigest()
def sha3_384(string, salt=None, front=False, back=False, **placeholder): """ Create a SHA3 384 hash from a given string > :param string: string to hash > :return: SHA3 384 hash Example: >>> sha3_384("test") e516dabb23b6e30026863543282780a3ae0dccf05551cf0295178d7ff0f1b41eecb9db3ff219007c4e097260d58621bd """ obj = sha3.sha3_384() if salt is not None and front is True and not back: obj.update(salt + string) elif salt is not None and back is True and not front: obj.update(string + salt) else: obj.update(string) return obj.hexdigest()
import sha3 data = 'maydata' s = sha3.sha3_224(data.encode('utf-8')).hexdigest() print(s) data = 'maydata' s = sha3.sha3_384(data.encode('utf-8')).hexdigest() print(s) data = 'maydata' s = sha3.sha3_512(data.encode('utf-8')).hexdigest() print(s)
def shaAlgorithms(mode, vectors, number): shaTimes = [] vectores = HashVectorInput(vectors) for i in range(len(vectores)): if vectores[i] == "million": vectores[i] = 'a' * 1000000 plaintext = bytearray(vectores[i], 'utf-8') if mode == 1: t = time.perf_counter() h = hashlib.sha384(plaintext) elapsedTime = time.perf_counter() - t shaTimes.append(elapsedTime) diggest = h.digest().hex().upper() print("Hash SHA384:", diggest) elif mode == 2: t = time.perf_counter() h = hashlib.sha512(plaintext) elapsedTime = time.perf_counter() - t shaTimes.append(elapsedTime) diggest = h.digest().hex().upper() print("Hash SHA512:", diggest) elif mode == 3: t = time.perf_counter() h = sha3.sha3_384(plaintext) elapsedTime = time.perf_counter() - t shaTimes.append(elapsedTime) diggest = h.digest().hex().upper() print("Hash SHA3_384:", diggest) elif mode == 4: t = time.perf_counter() h = sha3.sha3_512(plaintext) elapsedTime = time.perf_counter() - t shaTimes.append(elapsedTime) diggest = h.digest().hex().upper() print("Hash SHA3_512:", diggest) for n in range(0, number // 8): plaintext = (b'\x00') * n if mode == 1: t = time.perf_counter() h = hashlib.sha384(plaintext) elapsedTime = time.perf_counter() - t shaTimes.append(elapsedTime) diggest = h.digest().hex().upper() if mode == 2: t = time.perf_counter() h = hashlib.sha512(plaintext) elapsedTime = time.perf_counter() - t shaTimes.append(elapsedTime) diggest = h.digest().hex().upper() if mode == 3: t = time.perf_counter() h = sha3.sha3_384(plaintext) elapsedTime = time.perf_counter() - t shaTimes.append(elapsedTime) diggest = h.digest().hex().upper() if mode == 4: t = time.perf_counter() h = sha3.sha3_512(plaintext) elapsedTime = time.perf_counter() - t shaTimes.append(elapsedTime) diggest = h.digest().hex().upper() return shaTimes
def digest(self): return sha3.sha3_384(self._data).digest()
def sha3_384(message): return sha3.sha3_384(message).digest()