在Visual C#中解密密码

本文关键字:解密 密码 Visual | 更新日期: 2023-09-27 18:29:45

我正在数据库中工作,其中我插入数据库中的一些加密数据必须解密才能显示给用户。是否可以将数据库中的解密消息/varchar条目转换为其Orginal或String形式?假设我有这个散列消息

`abc = `'7meXQAMRb+ERvBj6Dy/SEe6ldukGy6bTKugnCsoYyl+lYNT6';

有没有办法再次将7meXQAMRb+ERvBj6Dy/SEe6ldukGy6bTKugnCsoYyl+lYNT6返回到abc?

顺便说一句,我使用了Omu Encrypto来加密我的密码

在Visual C#中解密密码

否,您无法解密已散列的数据。

这就是散列信息的全部意义;在大多数情况下,这是一个单向过程。

你可以使用所谓的彩虹攻击来强制一些输入,看看哈希是否匹配,但说实话,这需要很长时间,可能不是你想要的。

有关更多详细信息,请参阅Eric J的回答。

无法将哈希密码可靠地反转为原始字符串。然而,可以重构一些有效的输入,从而生成给定的哈希。我提供这个答案是因为其他答案只是部分正确,理解哈希的相对安全性很重要。

为了理解这一点,假设您使用1位哈希算法(即哈希为1或0)。您散列的所有字符串的一半将产生"1"。将其扩展为2位散列,随机散列的四分之一字符串将产生给定的散列值(散列将是0、1、2或3…二进制00、01、10、11)。将其扩展为128位,尽管散列冲突远不常见,但它们仍然会发生。如果你的哈希算法有已知的漏洞,它可以通过计算直接击败它

例如,MD5可以使用Rainbow Tables进行攻击。有一些在线服务提供哈希"破解"功能,例如。http://md5crack.com/.在这里,破解意味着重建一些产生哈希的有效输入。即使是暴力破解在现代处理能力下也是可行的,尤其是使用基于GPU的方法和/或分布式计算。

哈希是一个很好的工具,但要注意您的安全要求,以及将所选哈希算法生成的哈希反转为产生该哈希的有效输入的相对容易性。此外,一定要在哈希中使用salt值。

更新

既然这个问题已经被重写了,我将向您介绍AES加密。参见

在C#中使用AES加密

哈希是单向的,但如果您像您所说的那样使用第三方加密方法,它们也应该提供解密方法。