允许将哈希字节输出转换为整数



我有一些代码,下面几行:

CAST(HASHBYTES('MD5', 'some long string with up to 256 characters') AS int)
CAST(HASHBYTES('SHA2_256', 'some very very long string...') AS int)

这样做是为了生成唯一的 int 值,稍后将 int 值用作查找键(或连接中的外键)。因此,我对为什么这样做的最佳猜测是使连接更快,能够生成索引(并且不会遇到那里的 900 字节限制)。

但我不确定上面的输出在将其转换为 int 时是否不会产生更多的冲突。

我的理解是,不可能将 MD5 哈希甚至 SHA-256 哈希表示为 int 值......

该代码最初是在 SQL-Server 2008 上开发的。我目前使用 SQL-Server 2014。

当然,它会产生更多的冲突。int只有 4 个字节(32 位),而MD5生成 20(160 位)和SHA2_256 32(256 位)。更少的位意味着更少的唯一值,因此更多的冲突。

从技术上讲,这是允许的...

最新更新