我知道 Sql server2008 引入了 HASHBYTES() ,它使用 md5 像这样加密任何字符串Select HASHBYTES( 'md5', 'demo' )
,而用于解密的代码像这样
Select CONVERT(VARCHAR(MAX), HASHBYTES( 'md5', 'demo' ), 2)
但是当我尝试第二个选择语句时,它以加密格式显示值。那么如何将演示解密为文本。谢谢
我知道 Sql server2008 引入了 HASHBYTES() ,它使用 md5 像这样加密任何字符串Select HASHBYTES( 'md5', 'demo' )
,而用于解密的代码像这样
Select CONVERT(VARCHAR(MAX), HASHBYTES( 'md5', 'demo' ), 2)
但是当我尝试第二个选择语句时,它以加密格式显示值。那么如何将演示解密为文本。谢谢
这是一种散列方式;您无法取回原始表格。无法解密哈希。目的是什么?
如果您只是想将此哈希值与其他哈希值进行比较,那么您可以执行类似的操作
IF HASHBYTES('md5', 'demo') = HASHBYTES('md5',@param)
PRINT 'Match!';
编辑:
散列根本不加密原始值。相反,散列将单向数学算法应用于原始值,从而产生二进制值。
它主要用于存储密码。因此,密码将以哈希格式存储。当用户提供凭证(id/password)时;它不会解密存储的密码;相反,用户提供的密码将使用相同的算法进行哈希处理,并且该哈希值将与存储的哈希值进行比较(如上面的代码示例所示)。