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