如何在 SQL Server 2008 中转换文本字符串中的哈希密码
Posted
技术标签:
【中文标题】如何在 SQL Server 2008 中转换文本字符串中的哈希密码【英文标题】:How to convert hash password in text string in SQL Server 2008 【发布时间】:2018-02-14 08:12:29 【问题描述】:如何在 SQL Server 2008 中将散列密码转换为文本字符串?
我想知道存储在 SQL Server 中的用户密码作为哈希密码。如何将散列密码转换为普通文本?
【问题讨论】:
这是不可能的。散列字符串是单向的。如果要检查密码是否正确,则必须构建哈希并比较两个哈希值。 首先,告诉你的老板你不想在你的工作场所负责安全,其次阅读这个en.wikipedia.org/wiki/Hash_function 【参考方案1】:这通常不是它的工作方式。对以下主体进行密码检查
密码->加密->保存
然后当用户输入密码时,您重新加密它,并将新加密的密码与旧密码进行比较,如果相同,则您获得了可以输入的正确密码。这可以阻止人们“找出”其他人的密码并保持系统安全。这就是为什么经常需要暴力破解密码才能进入的原因。
如果您可以将其解密 - 那么首先将其加密存储是没有意义的。
【讨论】:
then there was no point storing it encrypted in the first place
好吧,对于加密,您希望能够解密它。另一方面,散列...securityinnovationeurope.com/blog/page/…
我指的是“加密”作为一个通用术语,用于使其难以理解......而不是真正的可逆的特定加密......【参考方案2】:
您不能发送字符串并对其进行解密,因为 DecryptByPassPhrase 函数需要一个 varbinary 参数。
这是一个小例子
declare @encrypt varbinary(200)
select @encrypt = EncryptByPassPhrase('key', 'abc' )
select @encrypt
select convert(varchar(100),DecryptByPassPhrase('key', @encrypt ))
【讨论】:
以上是关于如何在 SQL Server 2008 中转换文本字符串中的哈希密码的主要内容,如果未能解决你的问题,请参考以下文章