如何在 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 中转换文本字符串中的哈希密码的主要内容,如果未能解决你的问题,请参考以下文章

在 PLPGSQL/Orafce 中转换文本

在 sql server 2008 中使用 unicode 文本

如何在 SQL Server Like 子句中转义通配符

如何在 SQL Server 中旋转文本列?

Oracle PL/SQL查询结果如何自动换行

Oracle PL/SQL查询结果如何自动换行