对于学校,我们有一个项目分为两部分:一部分在ASP.NET(C#),一部分在Java。 我们有一个管理员,他必须能够登录Web应用程序和他的工具(Java)。在我们的项目中,ASP.NET创建了数据库,这很容易。
但我们必须访问admin的密码才能让他登录我们的Java应用程序。密码由ASP.NET进行哈希处理。有谁知道如何用Java解密它?
答案 0 :(得分:2)
NONONONONONO - 如果你可以"解密"," dehash"密码然后你必须立即改变代码的工作方式,从现在开始不可能来实现这一目标。他们被抛弃是有充分理由的。
您需要做的是创建某种逻辑来记录某些管理员而不使用其他用户的密码 - 通过某些管理面板,您可以创建与常规登录相同的会话/ cookie信息做。知道用户密码的唯一人必须是用户本人,没有其他人。
答案 1 :(得分:0)
你想要的并不是不可能的,但是你想要的是真正难以实现的,如果你选择一个好的密码,几乎不可能从哈希中获取密码而不计算一段时间。所有信息,如长度包含单词或密码是否小写可以帮助您“反转”哈希。
大多数人会说这是不可能的原因是因为散列函数被设计为单向工作。它们通常用于存储密码,如果你可以简单地反转这个过程真的很糟糕,因为你可以轻松地在数据库中反转存储的密码。
首先,您可以使用彩虹表。这是存储哈希值和初始值的列表。 (请注意,彩虹表必须适合您的哈希函数。) 如果您可以在彩虹表中找到与密码哈希匹配的哈希,则可以查找初始值。但Rainbow表只包含常用密码的哈希值。如果你选择一个大的和/或复杂的密码你需要通过所有的密码命令,看看这个组合之一的哈希是否与密码的哈希相匹配,但这将永远需要,除非你为像NSA这样的机构工作可以访问超级计算机。