我正在尝试编写代码,以验证给定的字符串是否为以下类型之一的哈希值: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
但是它们不能正常工作。有什么想法我写错了吗?
答案 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
所有这些都假定您正在采用十六进制哈希值,该哈希值是每种算法的输出。如果这个假设是错误的,请告诉我,我可以进行更新。