如何在c#中解码Salt + Hash密码?

时间:2016-09-27 01:11:13

标签: c# cryptography

我是asp.net mvc语言的新手。我在using System.Security.Cryptography;中搜索的代码是Google代码,用于生成salt + hash个密码。

我的问题是可以使用c#解码吗?

3 个答案:

答案 0 :(得分:1)

简答:不。

另见https://en.wikipedia.org/wiki/Hash_function

正确的盐渍哈希不能恢复,这是这样做的重点。

答案 1 :(得分:1)

你这样说是对的。

简短的回答是否定的。 Hashing提供了一个用于模糊数据的单向接口,其中加密为加密数据的加密/解密提供了双向接口。

哈希不能被“解密”并且我松散地使用该术语的唯一方法是通过哈希方法强制执行。这是通过使用相同的散列方法运行一堆密码和salt组合来完成的,直到找到原始散列的匹配。然而,使用强大的散列方法和密码+盐,这可能成为一项几乎不可能完成的任务。

有用的讨论:Fundamental difference between Hashing and Encryption algorithms

编辑:

您提供的在线密码学家的链接使用所谓的对称密钥算法。这意味着单个密钥用于加密和解密数据。

https://en.wikipedia.org/wiki/Symmetric-key_algorithm

答案 2 :(得分:0)

没有。不容易。

Hash会接受一些文本并生成一个数字(通常)

例如,md5哈希

password =>  5f4dcc3b5aa765d61d8327deb882cf99

根据哈希的性质,没有简单的方法可以从数字回到原始文本"密码"

但是,对于半聪明的黑客,你可以使用所有单词的字典生成哈希,并在合理的时间内破解大多数哈希密码,因为人们使用单词和符号的常见组合。因此,如果您碰巧得到一个散列密码列表,您可以对它们进行字典攻击。使用"密码"的任何人因为他们的密码最终会有相同的哈希值。

作为对此的辩护,如果您为每个用户添加一些独特的文字,例如Salt,您的用户名,现在您已经变得更难了: -

你的字符串哈希变为" Yukkipassword"哈希值为52fbd06f5b93a51b3f3cd9e807a9f61c

现在每个人都使用"密码"对于他们的密码也会有不同的哈希值,字典攻击密码变得非常困难