#programa : hashfile1.py
#autor : jorge nolasco valenzuela
#fecha : 27-07-2017
"""
descripcion : este programa muestra
el uso de diferentes algoritmos hash
"""
import hashlib
import os

def tamano(the_path):
    path_size = 0
    for path, dirs, files in os.walk(the_path):
        for fil in files:
            filename = os.path.join(path, fil)
            path_size += os.path.getsize(filename)

    listado=os.listdir("imagenes")
    size=path_size/1024
    return listado,path_size

def md5(ruta):
    listado2=os.listdir(ruta)
    for fichero in listado2:
        fp = open(ruta+"/"+fichero, "rb")
        buffer = fp.read()
        # md5
        hashObj = hashlib.md5()
        hashObj.update(buffer)
        lastHash = hashObj.hexdigest().upper()
        md5 = lastHash
        fp.close()
        return fichero,buffer,lastHash

def sha1(ruta):
    listado2=os.listdir(ruta)
    for fichero in listado2:
        fp = open(ruta+"/"+fichero, "rb")
        buffer = fp.read()
        # sha1
        hashObj = hashlib.sha1()
        hashObj.update(buffer)
        lastHash = hashObj.hexdigest().upper()
        sha1 = lastHash
        fp.close()
        return fichero,buffer,lastHash

def sha224(ruta):
    listado2=os.listdir(ruta)
    for fichero in listado2:
        fp = open(ruta+"/"+fichero, "rb")
        buffer = fp.read()
        # sha224
        hashObj = hashlib.sha224()
        hashObj.update(buffer)
        lastHash = hashObj.hexdigest().upper()
        sha224 = lastHash
        fp.close()
        return fichero,buffer,lastHash

def sha256(ruta):
    listado2=os.listdir(ruta)
    for fichero in listado2:
        fp = open(ruta+"/"+fichero, "rb")
        buffer = fp.read()
        # sha256
        hashObj = hashlib.sha256()
        hashObj.update(buffer)
        lastHash = hashObj.hexdigest().upper()
        sha256 = lastHash
        fp.close()
        return fichero,buffer,lastHash

def sha384(ruta):
    listado2=os.listdir(ruta)
    for fichero in listado2:
        fp = open(ruta+"/"+fichero, "rb")
        buffer = fp.read()
        # sha384
        hashObj = hashlib.sha384()
        hashObj.update(buffer)
        lastHash = hashObj.hexdigest().upper()
        sha384 = lastHash
        fp.close()
        return fichero,buffer,lastHash

def sha512(ruta):
    listado2=os.listdir(ruta)
    for fichero in listado2:
        fp = open(ruta+"/"+fichero, "rb")
        buffer = fp.read()
        # sha512
        hashObj = hashlib.sha512()
        hashObj.update(buffer)
        lastHash = hashObj.hexdigest().upper()
        sha512 = lastHash
        fp.close()
        return fichero,buffer,lastHash


while True:
    print("MENU:")
    print("1: TAMAÑO FICHERO")
    print("2: MD5")
    print("3: SHA1")
    print("4: SHA224")
    print("5: SHA256")
    print("6: SHA384")
    print("7: SHA512")
    print("8: SALIR")
    opc=int(input("SELECCIONE OPCION :"))
    if opc==1:
        listado1,size1=tamano("imagenes")
        print("=" * 40)
        print("Listado de Ficheros:",listado1)
        print("Tamaño:{0:8.0f} kb".format(size1/ 1024))
        print("=" * 40)
    elif opc==2:
        print("=" * 40)
        fichero, buffer, lastHash= md5("imagenes")
        print("FICHERO :"+fichero)
        print("MD5 :"+lastHash)
        print("=" * 40)
    elif opc==3:
        print("=" * 40)
        fichero, buffer, lastHash = sha1("imagenes")
        print("FICHERO :" + fichero)
        print("SHA1 :" + lastHash)
        print("=" * 40)
    elif opc == 4:
        print("=" * 40)
        fichero, buffer, lastHash = sha224("imagenes")
        print("FICHERO :" + fichero)
        print("SHA224 :" + lastHash)
        print("=" * 40)
    elif opc == 5:
        print("=" * 40)
        fichero, buffer, lastHash = sha256("imagenes")
        print("FICHERO :" + fichero)
        print("SHA256 :" + lastHash)
        print("=" * 40)
    elif opc == 6:
        print("=" * 40)
        fichero, buffer, lastHash = sha384("imagenes")
        print("FICHERO :" + fichero)
        print("SHA384 :" + lastHash)
        print("=" * 40)

    elif opc == 7:
        print("=" * 40)
        fichero, buffer, lastHash = sha512("imagenes")
        print("FICHERO :" + fichero)
        print("SHA512 :" + lastHash)
        print("=" * 40)

    else:
        break





