-1

我知道 Sql server2008 引入了 HASHBYTES() ,它使用 md5 像这样加密任何字符串Select HASHBYTES( 'md5', 'demo' ),而用于解密的代码像这样

Select CONVERT(VARCHAR(MAX), HASHBYTES( 'md5', 'demo' ), 2) 

但是当我尝试第二个选择语句时,它以加密格式显示值。那么如何将演示解密为文本。谢谢

4

1 回答 1

2

这是一种散列方式;您无法取回原始表格。无法解密哈希。目的是什么?

如果您只是想将此哈希值与其他哈希值进行比较,那么您可以执行类似的操作

IF HASHBYTES('md5', 'demo') = HASHBYTES('md5',@param) 
    PRINT 'Match!';

编辑:

散列根本不加密原始值。相反,散列将单向数学算法应用于原始值,从而产生二进制值。

它主要用于存储密码。因此,密码将以哈希格式存储。当用户提供凭证(id/password)时;它不会解密存储的密码;相反,用户提供的密码将使用相同的算法进行哈希处理,并且该哈希值将与存储的哈希值进行比较(如上面的代码示例所示)。

于 2014-05-14T12:55:24.443 回答