gpt4 book ai didi

c# - 在 C# 和 SQL Server 2008 R2 中使用 MD5

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:03 25 4
gpt4 key购买 nike

我以前使用 MD5 以编程方式对密码进行哈希处理,但是当我比较在 C# 中创建的 MD5 哈希和由 SQL Server ( HASHBYTES('MD5', 'admin') ) 创建的 MD5 哈希时,结果并不相同。

它们怎么不一样呢?如何解决这个问题?

还有我应该如何在 sql server 2008 R2 中存储 MD5。使用 varbinary(max) 还是 binary(16)

最佳答案

除了 Reza M.A 的答案,你应该使用 HASHBYTES() 得到好的结果。但是,字节顺序可能是问题所在。在 SQL Server 2005+ 中,通过进行一些转换并使用内置的 REVERSE() 可以很容易地反转字节顺序。

DECLARE 
@test varchar(MAX),
@vbTest varbinary(MAX)

SET @test = 'admin'
SET @vbTest = CONVERT(varbinary(max), @test, 0)

SELECT
HASHBYTES('MD5', @vbTest),
CAST(
REVERSE(
CAST(
HASHBYTES('MD5', @vbTest)
AS varchar(max))
)
AS varbinary(max))

我相信你应该将散列输出存储为 varbinary(max),如果它是从 HASHBYTES() 输出的。否则,将其存储为您的原始值类型 - 如果它是二进制 (16),则使用它。

关于c# - 在 C# 和 SQL Server 2008 R2 中使用 MD5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18031480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com