SASH server 2008中的HASHBYTES()函数用法

时间:2014-05-14 12:37:26

标签: sql-server-2008 md5 hashbytes

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

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

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

1 个答案:

答案 0 :(得分:2)

它的单向散列;你不能恢复原始形式。无法解密哈希。 但目的是什么?

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

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

修改

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

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