我知道 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)时;它不会解密存储的密码;相反,用户提供的密码将使用相同的算法进行哈希处理,并且该哈希值将与存储的哈希值进行比较(如上面的代码示例所示)。