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