Exemple #1
0
def md5(fname):
	""" 
	https://stackoverflow.com/a/3431838/4739690

	md5 is percise enough for this use-case, this isn't crypto after all ;)
	"""		
	hash_md5 = md5_()
	with open(fname, "rb") as f:
		for chunk in iter(lambda: f.read(4096), b""):
			hash_md5.update(chunk)
	return hash_md5.hexdigest()
#!/usr/bin/env python3

from re import match
from hashlib import md5 as md5_
from itertools import product
md5 = lambda x: md5_(x.encode()).hexdigest()

TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ{}"
ENCRYPT, DECRYPT = 1, -1

def vigenere(string, key, mode=ENCRYPT, table=TABLE):
    L = len(key)
    key = [ table.index(i) for i in key ]
    string = [ table.index(i) for i in string ]
    cipher = [ (v + mode * key[i % L]) % len(table) for i, v in enumerate(string) ]
    return ''.join(table[i] for i in cipher)

key        = ".......?????"
plaintext  = "SECCON{...................................}"
ciphertext = "LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ"
md5_hash   = "f528a6ab914c1ecf856a1d93103948fe"

known_key = ''
for idx, char in enumerate('SECCON{'):
    for k in TABLE:
        if vigenere(char, k) == ciphertext[idx]:
            known_key += k
            break

print('known_key = %s' % known_key)
Exemple #3
0
def md5(byte):
    return md5_(byte).hexdigest().upper()
Exemple #4
0
def md5(text: str) -> str:
    m = md5_()
    m.update(text.encode())
    return m.hexdigest()