我想解密存储在Sql Server 2008数据库中的密码,这些密码是使用 Exec master.dbo.xp_sha1 @Password,@ EncPassword输出加密的。是否可以解密?
加密密码如下所示: xxstgggettebbqyyayujjweee
由于
答案 0 :(得分:4)
xp_sha1是一个非标准的主存储过程,它不包含在我见过的任何sql server中,但我快速浏览了一下google:http://www.xpcrypt.com/xpho/xp_sha1.htm
正如我在你的问题Encrypt passwords on Sql Server 2008 using SHA1中的回答/评论中所述,加密与散列不是一回事。 SHA1是哈希,而不是加密。加密可以撤消,哈希不能。
在最后一个问题的答案中提到的链接会详细讨论,但这里有几篇专门围绕加密和散列之间差异的文章:
Difference between Hashing a Password and Encrypting it
http://www.darkreading.com/safely-storing-user-passwords-hashing-vs-encrypting/a/d-id/1269374
请理解加密和散列之间存在根本区别。
如果您将“密码”加密为“123809dsfajsfoiwj”作为示例,知道密钥和加密方法,您可以通过适当的解密返回“密码”。
使用SHA1和散列“密码”,无法将散列的“jdsfioajd0f98uas”(示例)反转回原始的“密码”。每次给定相同的输入时,哈希都会创建相同的哈希值,因此哈希值会与“验证密码”的哈希值进行比较。你永远不会回到原来的。