在T-SQL语言中直接计算MD5哈希值是否可行?

8

我需要对我们的Sql Server 2000数据库中的所有密码进行哈希(MD5)。我可以轻松地生成一个C# / VB.NET程序来转换(哈希)所有密码,但我想知道(更多是为了我的教育而不是真正必要的需求),是否可能在T-SQL中直接计算MD5哈希。


谢谢任何回答的人。


相关的,对于SQL Server 2000之后的版本:https://dev59.com/wXA75IYBdhLWcg3wAD_x - Factor Mystic
6个回答

7

在2005年及以后,您可以调用HashBytes()函数。而在2000年,最接近的功能是pwdencrypt/pwdcompare,尽管这些函数有自己的缺陷(请阅读链接的评论)。


非常感谢您的回复。最终我选择了Daniel的答案,因为我正在寻找MD5散列,但是您的答案非常接近,并且有关pwdencryt/pwdcompare的建议让我学到了真正有趣的东西。 - M.Turrini

3

非常感谢。我希望能够找到一种直接使用SQL语句完成的方法,但这也不错! - M.Turrini

2

尽管我选择了另一个答案,但我还是非常感谢你的回复。 - M.Turrini

1
请参考以下使用2008的示例/解决方案。
DECLARE @HashThis nvarchar(4000);
SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT HashBytes('md5', @HashThis);
GO

0

MD5 并没有什么神奇的地方,如果你想的话,可以将其实现为纯 T-SQL 函数。我不确定在 T-SQL 中这样做是否有趣,但是没有任何阻止你这样做的东西 :)


-1

仅供记录:

UPDATE T_WHATEVER_YOUR_TABLE_NAME_IS 
    SET PREFIX_Hash = LOWER(SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', LOWER('a-string-with-utf8-encoded-international-text'))), 3, 32) ) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接