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

本文关键字:Salt Hash 密码 解码 | 更新日期: 2023-09-27 18:08:52

我是asp.net mvc语言的新手。我看到这个代码using System.Security.Cryptography;,因为我在Google中搜索它是为了制作salt + hash密码。

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

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

你说得对。

简短的回答是否定的。哈希提供了一个单向接口用于隐藏数据,而加密提供了一个双向接口用于加密数据/解密加密数据。

哈希不能被"解密"的唯一方法是通过哈希方法进行暴力破解。这是通过通过相同的散列方法运行一堆密码和盐组合来完成的,直到找到与原始散列相匹配的。然而,使用强哈希方法和密码+盐,这几乎是不可能完成的任务。

有用的讨论:哈希和加密算法的根本区别

编辑:

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

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

简短的回答:no.

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

正确加盐的哈希不能被还原,这就是这样做的意义所在。

No。不容易。

哈希将接受一些文本并产生一个数字(通常)

例如,md5哈希值

password =>  5f4dcc3b5aa765d61d8327deb882cf99

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

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

作为辩护,如果你为每个用户添加一些唯一的文本,一个Salt,比如你的用户名,现在你就变得更难了:-

你要散列的字符串变成"Yukkipassword",散列到52fbd06f5b93a51b3f3cd9e807a9f61c

现在每个使用"password"作为密码的人也会有不同的哈希值,并且字典攻击密码变得非常困难