A random hex generator
Anytime you have a stacked if with basically all of the same comparisions, you should consider another method.
Use a dict:
The most common way to do this sort of thing is a dict.  The dict makes it easy to map a string to a method like:
sha_methods = dict(
    sha1=hashlib.sha1,
    sha224=hashlib.sha224,
    sha256=hashlib.sha256,
    sha384=hashlib.sha384,
    sha512=hashlib.sha512,
)

def hexrandom(minint, maxint, shamode=&quot;sha1&quot;):
    if shamode not in sha_mthods:
        raise ValueError(&quot;Unknown hashlib method {}&quot;.format(shamode))
    x = str(rand.randint(int(minint), int(maxint)))
    return sha_methods[shamode](x.encode()).hexdigest()

Use a direct method lookup:
In this case, since the shamode string matches the method name hashlib, we can use getattr to directly lookup this method like:
def hexrandom(minint, maxint, shamode=&quot;sha1&quot;):
    method = getattr(hashlib, shamode, None)
    if method is None:
        raise ValueError(&quot;Unknown hashlib method {}&quot;.format(shamode))
    x = str(rand.randint(int(minint), int(maxint)))
    return method(x.encode()).hexdigest()