Hash 从散列中获取原始值

Hash 从散列中获取原始值,hash,passwords,oracle10g,Hash,Passwords,Oracle10g,前几天我在我们的企业系统上看到一张表——dba_用户oracle 我可以在此表中找到每位员工的哈希密码,以及他们的用户名 据我所知,从谷歌搜索用户名+密码是串联,然后散列 问:知道我自己的用户名,密码的原始值,还有散列值…这里有没有能够找出散列值的危险 另外,谷歌搜索甲骨文10g散列,似乎有些人认为他们已经找到了散列算法。我也读过彩虹表和离线字典攻击。。。最后,我用谷歌搜索了Oracle11g,该版本的一个特点是,它们将散列密码隐藏在dba_用户中,这样最终用户就看不到了 不管怎么说,我正在琢磨

前几天我在我们的企业系统上看到一张表——dba_用户oracle

我可以在此表中找到每位员工的哈希密码,以及他们的用户名

据我所知,从谷歌搜索用户名+密码是串联,然后散列

问:知道我自己的用户名,密码的原始值,还有散列值…这里有没有能够找出散列值的危险

另外,谷歌搜索甲骨文10g散列,似乎有些人认为他们已经找到了散列算法。我也读过彩虹表和离线字典攻击。。。最后,我用谷歌搜索了Oracle11g,该版本的一个特点是,它们将散列密码隐藏在dba_用户中,这样最终用户就看不到了


不管怎么说,我正在琢磨为什么终端用户可以访问这个表,为什么DBA看起来不太担心这个问题。

对密码进行散列,然后将散列存储到数据库中的整个要点是,如果这样做,就不必担心谁可以看到表中的密码

要强调的是:如果没有原始密码,存储在数据库中的正确计算的密码哈希值是完全无用的


据我所知,对于像md5这样的算法,没有一种方法可以从散列中对原始密码进行反向工程。这就是为什么现在大多数服务在你点击“我忘了”链接时不向你发送密码,而是在你提供旧密码并且服务比较哈希值时提供设置新密码的功能。

对密码进行哈希运算,然后将哈希值存储到数据库中的关键在于,如果你这样做,你就不必担心谁可以设置新密码请参阅表中的密码

要强调的是:如果没有原始密码,存储在数据库中的正确计算的密码哈希值是完全无用的


据我所知,对于像md5这样的算法,没有一种方法可以从散列中对原始密码进行反向工程。这就是为什么现在大多数服务在你点击“我忘了”链接时不向你发送密码——而是在你提供旧密码并且服务比较哈希值时提供设置新密码。

详细说明@Goran Jovic所说的,通过将每个散列密码与用户名连接起来,这样做没有危险。要理解这一点,您必须了解彩虹表是如何工作的。使用彩虹表破解一系列密码的方法是将密码中预先计算的一系列哈希加载到内存中。然后,搜索与未知密码相关的哈希表,查看是否可以在rainbow表中找到匹配项,其中您知道与特定哈希对应的密码。但是,通过使用唯一标识符(即用户名)对散列进行加密,您可以击败此攻击,因为即使是已经看到的密码,其散列方式也会因与之关联的用户而异。因此,现在,彩虹表不再需要处理数百万种不同的密码组合,它必须包含每个可能的密码加上每个可能的用户名的散列。这个搜索的结果空间太大,无法搜索,除非计算技术有了用暴力战术无法击败的巨大飞跃。

详细阐述@Goran Jovic所说的,将ie将每个哈希密码与用户名连接起来。这样做没有危险。要理解这一点,您必须了解彩虹表是如何工作的。使用彩虹表破解一系列密码的方法是将密码中预先计算的一系列哈希加载到内存中。然后,搜索与未知密码相关的哈希表,查看是否可以在rainbow表中找到匹配项,其中您知道与特定哈希对应的密码。但是,通过使用唯一标识符(即用户名)对散列进行加密,您可以击败此攻击,因为即使是已经看到的密码,其散列方式也会因与之关联的用户而异。因此,现在,彩虹表不再需要处理数百万种不同的密码组合,它必须包含每个可能的密码加上每个可能的用户名的散列。这个搜索的结果空间太大,无法搜索,除非计算技术有了巨大的飞跃,否则使用暴力策略是不可能打败的。

如今,不加盐的MD5很容易被暴力强迫,特别是使用彩虹表。强烈建议至少使用像SHA-1这样的盐腌杂烩。谢谢@GoranJovic。对于我的表中的一条记录,我确实知道我自己的密码的原始值。这些天来,未加盐的MD5很容易被强制使用,尤其是彩虹表。强烈建议至少使用像SHA-1这样的盐腌杂烩。谢谢@GoranJovic。为了一个记录在
在我的表中,我确实知道我自己的密码的原始值。选择REGEXP_SUBSTRDBMS_METADATA.get_ddl'USER','USER','[^]+'PASSWD from dual;Oracle使用哪种哈希算法?选择REGEXP_SUBSTRDBMS_METADATA.get_ddl'USER','USER','[^]+'PASSWD from dual;Oracle使用哪种哈希算法?