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