如何在c#中解码Salt + Hash密码
本文关键字:Salt Hash 密码 解码 | 更新日期: 2023-09-27 18:08:52
我是asp.net mvc语言的新手。我看到这个代码using System.Security.Cryptography;
,因为我在Google
中搜索它是为了制作salt + hash
密码。
我的问题是可以用c#解码吗?
你说得对。
简短的回答是否定的。哈希提供了一个单向接口用于隐藏数据,而加密提供了一个双向接口用于加密数据/解密加密数据。
哈希不能被"解密"的唯一方法是通过哈希方法进行暴力破解。这是通过通过相同的散列方法运行一堆密码和盐组合来完成的,直到找到与原始散列相匹配的。然而,使用强哈希方法和密码+盐,这几乎是不可能完成的任务。
有用的讨论:哈希和加密算法的根本区别
编辑:您提供的在线加密器的链接使用了所谓的对称密钥算法。这意味着数据的加密和解密使用单个密钥。
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"作为密码的人也会有不同的哈希值,并且字典攻击密码变得非常困难