检查字符串哈希类型

时间:2020-04-07 14:45:59

标签: python hash md5 sha1 sha256

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

ALTER FUNCTION MailReplacer20 (
@ReplaceString varchar(max)
)
Returns @temptable TABLE (x varchar(max), y varchar(max))
AS 
BEGIN
DECLARE @value1 varchar(max) = @replacestring
WHILE (LEN(@value1)) > 0

    BEGIN
    INSERT INTO @temptable (x,y)
    VALUES ((SUBSTRING(@value1, CHARINDEX('@', @value1), CHARINDEX('=',@value1) -CHARINDEX('@',@value1))),
            (SUBSTRING(@value1, CHARINDEX('=', @value1)+1, CHARINDEX(';',@value1) -CHARINDEX('=',@value1)-1)))

    SET @value1 = REPLACE(@value1, SUBSTRING(@value1, 1, CHARINDEX(';', @value1)), '')
    END
RETURN
END
GO

但是它们不能正常工作。有什么想法我写错了吗?

1 个答案:

答案 0 :(得分: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

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

相关问题