如果密码所有者不适用于您的公司,那么如果您继续走这条路,您可能会触犯法律。要非常小心,以确保您知道自己是否违法,并就是否违法做出适当的决定。我不提倡违法,并提供以下公开信息,用于您的一般教育目的。
不想更改密码但想学习它通常是非常可疑的。如果您有业务访问密码保护的数据,那么您可能有权更改密码,或者您可能已经知道密码。想要保持密码不变,但要了解它是什么并获得对基础资产的访问权,这就引出了一个问题:为什么要保持密码不变?一个明显的答案是防止合法所有者知道您有访问权限。另一个明显的答案是因为您忘记了密码并试图重新获得对自己数据的访问权限——尽管访问哈希是非常不寻常的,但如果一个人是真正的合法所有者,则不能仅更改密码。
正如评论者所提到的,您无法解密哈希。散列和加密/解密是两个独立的操作。加密和解密是相反的,而散列没有相反的功能。
为简单起见,将加密视为每个字符加1,因此原文中的“a”变为“b”,原文中的“b”变为“c”,以此类推。解密将是从数字中减去 1,因此密文中的“b”变为“a”。实际上,使用了更难的数学问题,但这是一般的想法。
散列没有逆。考虑像查找 mod 2 结果一样散列。例如,“a”可以表示为值“97”,97 mod 2 = 1。“b”可以表示为值“98”,98 mod 2 = 0。如下表所示...
letter numeric mod 2
representation (the 'hash')
a 97 1
b 98 0
c 99 1
d 100 0
e 101 1
从表中可以看出,仅知道哈希值是无法返回原始字母的。实际上,哈希要复杂得多,基于更难的数学,并且通常旨在防止冲突 - 避免在我的描述中 mod2 每个“奇数”字母导致“1”而每个“偶数”字母导致一个“0”。
尽管如此,应该清楚的是,您不能像反转(解密)加密那样反转散列。
也就是说,有时可以找到密码。您可能会“蛮力”每个可能的输入,直到获得预期的结果。也就是说,尝试使用密码“a”、“aa”、“aaa”、“aaa”、...、“b”、“bb”、...、“ab”、...好的散列算法,这是找出特定散列的最快方法。但是,使用良好的哈希算法和足够长的密码,您将无法在太阳熄灭之前以这种方式学习密码。
有时哈希算法会有弱点。有时,会有一种比暴力破解更快的方法。您需要查看正在使用的特定算法并了解其弱点,但这并不意味着它可以在合理的时间内破解。我将把它作为练习留给读者,并且不会响应任何指针请求:)
最后,通常比尝试反转哈希更容易的是以另一种方式学习密码。实际上,这正是强哈希算法旨在迫使您执行的操作 - 学习原始密码应该非常困难,以至于您不得不求助于另一种技术。例如,如果使用密码的人为您的公司工作,CEO 可以要求他们提供密码。更多时候,真正的目标是控制一个有效的账户,这样你就可以改变当前的密码。
鉴于您的问题含糊不清,这几乎是我所能给出的答案。如果您对更多内容感兴趣,请咨询您的律师并开始阅读 Wikipedia 文章。他们在解释加密和散列以及相关算法方面做得非常好。