加密算法是md5。如何使用sql server生成类似的哈希密码?
在C#中,我使用下面的代码来生成密码: -
private MD5 _md5;
var plain = ASCIIEncoding.Default.GetBytes('admin');
var hashed = _md5.ComputeHash(plain);
var shashed = ASCIIEncoding.Default.GetString(hashed);
Console.Write(shashed);
结果是:!#/)zW¥§C‰JJ€Ã
当我使用SQL Server的代码来生成密码: -
DECLARE @HashThis varchar(100);
SELECT @HashThis = CONVERT(varchar(100),'admin');
SELECT HASHBYTES('MD5', @HashThis);
GO
结果是:0x21232F297A57A5A743894A0E4A801FC3
我正在使用相同的算法。我如何在SQL Server中生成相同的哈希值?
MD5不是安全的,特别是没有盐。您应该使用bcrypt或PBKDFv2。 – SLaks
您在SQL中看到的是十六进制表示形式,其中随着C#代码将字节值写入控制台,您将在字体中获得这些字节值的表示形式。 将密码存储在SQL中是一种常见的做法,并且足够安全,因为您希望在登录期间比较计算得到的来自密码的哈希值。如果你使用加密,那么你开放的人可以解密的密码,作为一个哈希值必须被蛮力 – Quintium
而MD5是**不**密码学 - 它是哈希。 –