我需要散列(MD5)我们 Sql Server 2000 数据库中的所有密码。我可以轻松地生成一个 C#/VB.NET 程序来转换(散列)所有密码,但我想知道(更多的是为了我的教育而不是真正的迫切需要)是否可以直接在 T-SQL 中计算 MD5 散列。
感谢任何会回答的人。
问问题
21220 次
6 回答
7
在 2005 年及以后,您可以调用HashBytes()函数。在 2000 年,最接近的是pwdencrypt/pwdcompare,尽管这些功能有其自身的缺陷(阅读链接的评论)。
于 2009-05-26T13:19:32.153 回答
4
它正在使用此代码,但它不是该语言的原生代码。
于 2009-05-26T13:18:19.113 回答
2
不,在 SQL Server 2000 中没有用于生成 MD5 哈希的本机 TSQL 命令。
2005及以上可以使用该HashBytes
功能:http: //msdn.microsoft.com/en-us/library/ms174415.aspx
于 2009-05-26T13:22:13.770 回答
1
请参阅下面使用 2008 的示例/解决方案
DECLARE @HashThis nvarchar(4000);
SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT HashBytes('md5', @HashThis);
GO
于 2011-10-31T20:57:59.753 回答
0
md5 没有什么神奇之处,如果你愿意,你可以将它实现为一个纯 tsql 函数。我不确定在 tsql 中会不会很有趣,但是应该没有什么可以阻止你这样做:)
于 2009-05-26T16:38:48.850 回答
-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) )
于 2012-02-21T14:13:56.163 回答