问题标签 [rainbowtable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 有没有办法在没有彩虹表的情况下反转哈希?
可能重复:
md5 解码。他们是怎么做到的?
这个页面表明像 md5() 和 sha1() 这样的哈希算法可以反转,因为我们现在拥有巨大的处理能力。在这一点上,我认为只有 Rainbow Tables 才有可能。我错了吗?
如果 Rainbow Tables 是唯一的出路,那么有人如何反转用盐制成的哈希?
salt - 加盐如何防止攻击者访问您的密码哈希?
我已经阅读了一些关于密码加盐的问题,其中大部分涵盖了(我认为)我已经理解的内容。那是; 在密码哈希中包含随机盐的目的首先是为了防止两个哈希相同,即使密码相同也是如此。其次,为了阻止将哈希与预编译列表匹配的彩虹表攻击(因为没有一个预编译的哈希使用您使用的盐,因此需要为每个盐/哈希生成一个新的彩虹表)。如果我对此有任何误解,请随时纠正我。
现在我的问题是:如果攻击者可以访问您的哈希值(我们正在防范的场景),那么这意味着他们正在访问您的数据库。既然如此,哈希是什么肯定无关紧要,他们可以用他们想要的任何东西替换它吗?
passwords - 彩虹表的密码长度是多少?
我的银行将我的密码限制为 14 个字符,我怀疑他们使用 MD5 或未加盐的 SHA 哈希进行加密。
是否有包含最多 14 个字符的所有可能散列的彩虹表?
cryptography - 为什么盐会阻止彩虹表?
可能重复:
密码盐如何帮助抵御彩虹表攻击?
在你提到它之前,我已经阅读了这个问题。我没有跟上。
这是我对盐/彩虹表的理解。请纠正我哪里错了。
用户输入 raw
password
。password
与salt
给出passwordsalt
或连接saltpassword
。passwordsalt
/saltpassword
被散列为 valuehash
。进入黑客。
黑客使用彩虹表反转
hash
成passwordsalt
/saltpassword
。黑客手中有(示例)字符串
letmein1horse
。
鉴于letmein1horse
,这不只是意味着有两种选择:
密码是
letmein1
,盐是horse
。密码是
horse
,盐是letmein1
。
所以你明白我为什么感到困惑。我的理解显然是有缺陷的,因为如果它是这样工作的,显然盐是无用的。
或者:我的理解是否正确,是整个迭代方案完全消除了这个明显的弱点?
java - 彩虹表 - 哈希减少 - Java
你能给我一些关于在 Java 中实现彩虹表哈希的良好归约函数的建议吗?我在 C++ 中看到的归约函数大多使用无符号 64 位整数,这是 Java 现在本机无法提供的,我想找到另一个解决方案。(应该在 Java 8 中可用。)
或者:如果有人知道 Java 中的一个库支持 - 至少不是低效的 - 彩虹表的使用(可能还有 cration),请告诉我。最好不要自己实施。
可悲的是,我将 Java 作为一个平台绑定,所以我不能使用市场上好的 C++ 实现。
c# - 使用密码填充防止“彩虹表”逆向工程的密码哈希保护
我遇到过这篇文章,它描述了在数据库中存储“未加盐”密码哈希的危险,可能会使用所谓的“彩虹表”进行逆向工程。
它还附带这个C# 代码示例,基本上需要在您的用户密码数据库表中存储两个哈希列(而不是传统的 - 一个。)对我来说这种方法的问题是我已经建立了一个带有未加盐用户密码的数据库表散列,添加新列将需要重组数据库。所以在我这样做之前,我一直在寻找一个不同的选择,这就是我想出的。
这是一个函数,它不是简单地计算密码上的 SHA1 哈希,而是用一长串伪随机(但一致)数据填充它,然后计算哈希:
所以我的问题是,有人可以查看这段代码并告诉我这样做的危险与作者在他的代码中所建议的相比有什么危险吗?对于我的代码示例,我只需要在数据库中存储一个散列而不是两个(密码散列 + 盐散列。)
php - 如何在 PHP 中清理哈希转换器的输入?
我制作了一个网站,可以从用户输入纯文本生成哈希,用户可以输入单词/短语并从 MD5 或 SHA1(或两者)中进行选择。然后,该站点获取此输入并将其转换为 MD5 和 SHA1 并将其存储在数据库中,然后将其返回给用户。用户还可以在搜索栏中输入哈希,如果数据库有哈希,它将返回原始单词,目的是生成众包哈希表,同时为用户提供好处。我已经让主要功能正常工作,但我对应该清理什么感到两难,我希望用户能够输入特殊字符,因为这将提高搜索功能返回结果的机会,任何建议都将不胜感激,谢谢。
python-2.7 - 通过 python 查找的彩虹攻击失败。
我对已分配的作业有一些问题。要点是我必须对“汽车 fop”进行彩虹攻击。使用生成器表,RainbowAttack.py
脚本如下:
- 密钥广播给汽车(在这种情况下是对手)
- car/eve 以挑战回应
u
。 - 然后,该键以由 组成的散列响应
MD5(s||u)
。 - Eve 现在使用 Rainbow-table 来破解
s
。
我们使用 MD5 对我们的响应和我们的密钥进行哈希处理然后我们对哈希使用我们的归约函数并获取前 28 位
f_i(x) = (f(x)+i) mod 2^28.
我的哈希和归约函数
无论如何,当我们运行我们的脚本时,我们会收到响应,我们计算所有后继者并将它们与彩虹表中的端点进行比较,如果找到匹配,我们将获得碰撞的起点,现在我们检查密钥是否在链中从起点到终点,如果这里的其中一个钥匙与我们从 fop 得到的响应相同,我们就知道前一个钥匙是打开车门的秘密。
目前,我们只能在它位于彩虹表的开始位置或结束位置时才能真正找到密钥,而不是在链中时。这是检查后继者的循环代码,检查我们的后继者是否在彩虹表中,如果它们在,我们检查来自汽车 fop 的响应是否在那里,如果我们有我们的钥匙。
这可能是我们计算后继函数时引起的问题,因为归约函数将不同于键上使用的函数(我将递增,使链中所有键的归约函数略有不同)
彩虹表和文件可以在这里找到 (github)
(derp.py(彩虹攻击)和table1.csv(更改名称为table.csv))
python - TypeError:必须是字符串或缓冲区,而不是 int
我正在尝试解决Rainbow Tables
密码加密问题,但仅此而已。
我收到此错误:
我知道我错过了一些非常微不足道的东西,但无法找到我错过的地方。请帮忙。
encryption - 彩虹表可以从 md5 值中分析出简单的明文密码吗?
我知道哈希值(例如:md5 值)可以与多个值有联系,例如 '^&#%we242eweqweqweqwedfdfdfee2'、'%$#%3423efffe435%%^#'
但是由于大多数用户实际上使用的是非常简单的密码,那些 md5 值是否只能与有限的简单 cleartxt 密码有关?
我的意思是,如果 'cfcd208495d565ef66e7dff9f98764da' 只与 '0'、'tom123'、'goodcar' 等 30 个简单值有联系,那么从数据库中获取 md5 数据的黑客很容易找出用户名与其明文密码之间的关系,然后可以使用这对值在其他网站上破解相同的帐户。
那么,任何指定的 md5 值是否只对有限的简单值负责?
PS:我知道我可以加盐或使用更好的方法,如 sha512、sha3,但我对上面的问题很好奇。