检查字符串哈希类型

问题描述 投票:0回答:1

我正在尝试编写验证给定字符串是否为以下类型之一的哈希的代码:md4,sha1,sha256。我的功能现在看起来像:

def hash_is_md5(_hash) -> bool:
    search = re.compile(r"([a-fA-F\d]{32})").search
    return not bool(search(_hash) )

def hash_is_sha1(_hash) -> bool:
    if len(_hash) != 40:
        return False
    try:
        hash_int = int(_hash, 16)
    except ValueError:
        return False
    return True

def hash_is_sha256(_hash) -> bool:
    if (len(_hash.encode("utf-8")) / 8) == 32:
        return True
    else:
        return False

但是它们无法正常工作。任何想法我编码错了吗?

python hash md5 sha1 sha256
1个回答
0
投票

sha256的输出是具有64个字符的哈希。将其除以8实际上等于8。但是您甚至不需要if语句,您只需检查哈希的长度并返回该比较即可。因此,SHA256函数可能是

def hash_is_sha256(_hash) -> bool:
    return len(_hash) == 64

sha1的长度是40,而md5的长度是32,所以它们的功能看起来像...

def hash_is_sha1(_hash) -> bool:
    return len(_hash) == 40


def hash_is_md5(_hash) -> bool:
    return len(_hash) == 32

所有这些都假设您正在采用十六进制哈希值,该哈希值是每种算法的输出。如果这个假设是错误的,请告诉我,我可以进行更新。

© www.soinside.com 2019 - 2024. All rights reserved.