【发布时间】:2020-07-19 19:20:12
【问题描述】:
我正在尝试编写代码来验证给定的字符串是否是以下类型之一的哈希: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
但它们不能正常工作。有什么我编码错误的想法吗?
【问题讨论】:
-
“但它们不能正常工作。” 不是问题陈述。请准确说明什么是有效的,什么是无效的;您所看到的以及它与您的预期有何不同。
-
此外,MD5、SHA-1 和 SHA-256 哈希之间的唯一区别是十六进制字符串的长度。而已;所有其他信息都消失了。那么,为什么您对每种方法都使用完全不同的方法呢?
标签: python hash md5 sha1 sha256