我正在尝试创建一个像这样的唯一哈希:
SELECT
CAST(HASHBYTES('SHA1',
LTRIM(RTRIM(ISNULL('9',''))) +
LTRIM(RTRIM(isnull('X',''))) +
LTRIM(RTRIM(isnull('',''))) +
LTRIM(RTRIM(isnull('Y',''))) +
LTRIM(RTRIM(isnull('','')))) AS VARBINARY(20))
SELECT
CAST(HASHBYTES('SHA1',
LTRIM(RTRIM(isnull('9',''))) +
LTRIM(RTRIM(isnull('X',''))) +
LTRIM(RTRIM(isnull('Y',''))) +
LTRIM(RTRIM(isnull('',''))) +
LTRIM(RTRIM(isnull('','')))) AS VARBINARY(20))
不幸的是,尽管有不同的字符串,我最终会得到相同的哈希值。有什么想法吗?
PS:
这解决了上述“问题”:
SELECT LTRIM(RTRIM(ISNULL('9', '-'))) + N',' + LTRIM(RTRIM(ISNULL('X', '-')))
+ N',' + LTRIM(RTRIM(ISNULL('', '-'))) + N',' + LTRIM(RTRIM(ISNULL('Y',
'-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-'))) ,
CAST(HASHBYTES('SHA1',
LTRIM(RTRIM(ISNULL('9', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('X', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('Y', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-')))) AS VARBINARY(20))
SELECT LTRIM(RTRIM(ISNULL('9', '-'))) + N',' + LTRIM(RTRIM(ISNULL('X', '-')))
+ N',' + LTRIM(RTRIM(ISNULL('Y', '-'))) + N',' + LTRIM(RTRIM(ISNULL('',
'-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-'))) ,
CAST(HASHBYTES('SHA1',
LTRIM(RTRIM(ISNULL('9', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('X', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('Y', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-')))) AS VARBINARY(20))
答案 0 :(得分:5)
因为没有不同的标志:
LTRIM(RTRIM(ISNULL('9',''))) +
LTRIM(RTRIM(isnull('X',''))) +
LTRIM(RTRIM(isnull('',''))) +
LTRIM(RTRIM(isnull('Y',''))) +
LTRIM(RTRIM(isnull('',''))))
-- is the same of
LTRIM(RTRIM(isnull('9',''))) +
LTRIM(RTRIM(isnull('X',''))) +
LTRIM(RTRIM(isnull('Y',''))) +
LTRIM(RTRIM(isnull('',''))) +
LTRIM(RTRIM(isnull('',''))))
-- that is the same of
'9XY'