【问题标题】:Can you decrypt a hashed password from ASP.NET in Java?你能用 Java 解密来自 ASP.NET 的散列密码吗?
【发布时间】:2017-02-25 13:06:40
【问题描述】:

对于学校,我们有一个项目分为两部分:一是 ASP.NET (C#),一是 Java。 我们有一个管理员,他必须能够登录 web 应用程序和他的工具 (Java)。在我们的项目中,ASP.NET 制作数据库,非常简单。

但是我们必须访问管理员的密码才能让他登录我们的 Java 应用程序。密码由 ASP.NET 散列。有谁知道如何用Java解密它?

【问题讨论】:

  • 散列是一种单向算法。您无法从哈希中获取原始文本。加密是不同的。如果你有哈希值,你应该对用户给出的密码进行哈希处理,并将其与你已有的哈希值进行比较,而不是尝试对哈希后的密码进行去哈希处理。
  • 散列算法是一种单向加密。可以加密不能解密,只能匹配其他字符串。
  • @Thomas 首先,您需要展示您理解的“来自 ASP.NET 的散列密码”对您意味着什么。而且由于 Stack Overflow 不是代码翻译服务,您应该先展示您尝试过的内容。
  • @BackSlash 谢谢你的回答,很多事情都清楚了!

标签: java c# asp.net encryption


【解决方案1】:

NONONONONONO - 如果你可以“解密”,“dehash”密码,那么你必须立即改变你的代码的工作方式,从现在开始不可能实现这一点.对它们进行哈希处理是有充分理由的。

您需要做的是创建某种逻辑以在不使用其他用户密码的情况下登录某些管理员 - 通过一些管理面板,您可以在其中创建与常规登录相同的会话/cookie 信息。唯一知道用户密码的人必须是用户本人,而不是其他人。

【讨论】:

  • 不错的评论,但我不明白这是如何回答问题的。 OP 可能使用了错误的术语。
  • @ArtjomB。我正在考虑将其作为评论发布-但从某种意义上说,这是一个答案,因为我告诉他正确的方法是什么:创建管理面板-它没有回答“我如何解密...”的问题,但它广泛回答了基本问题:“我如何让管理员访问...”
  • 我明白你的意思,但你提出的逻辑正是 OP 所要求的。我以 Java 应用程序应该是管理面板的方式理解这个问题。如果没有一些代码来了解我们在说什么,这个问题是无法回答的。
  • 我不知道我们在谈论哪个代码,因为 ASP.NET 身份框架为我做了所有事情,甚至创建了一个数据库。所以,我认为解决这个问题的唯一方法是用 Java 重写散列算法。但因此我们需要 ASP.NET 框架使用的代码。 @ArtjomB。事实上,我们有一个管理面板和一个用于工作教练的网络应用程序(正如他们所说的那样)。
  • @luk2302 也许我的术语每次都不对,这很好知道。
【解决方案2】:

你想要的不是不可能,但你想要的真的很难,如果你选择一个好的密码,几乎不可能在不计算无限时间的情况下从哈希中获取密码。所有信息(如长度包含单词或密码是否小写)都可以帮助您“反转”哈希。

大多数人会说这是不可能的原因是,因为哈希函数被设计为以一种方式工作。它们通常用于存储密码,如果您可以简单地反转该过程,那将非常非常糟糕,因为您可以轻松地反转数据库中存储的所有密码。

首先你可以使用彩虹表。那是存储散列和初始值的列表。 (请注意,彩虹表必须适合您的哈希函数。) 如果您可以在彩虹表中找到与密码哈希匹配的哈希,则可以查找初始值。但是 Rainbow 表只包含常用密码的哈希值。如果您选择一个大的和/或复杂的密码,您需要检查所有密码组合,看看其中一个组合的哈希是否与密码的哈希匹配,但这将永远需要,除非您为 NSA 这样的机构工作可以使用超级计算机。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-25
    • 2019-02-15
    • 2021-09-26
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多