问题标签 [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.
encryption - 盐做法澄清
我最近在阅读 Jeff Six 的《Android 平台的应用程序安全性》,我发现了一个令我感到困惑的声明。在描述盐和散列函数的加密部分中,做了这个声明
就像 IVs [Initialization Vector] 一样,盐值应该是随机的,但它们不需要保密。
这是真的?因为我对盐和散列函数的理解是这个陈述是错误的,盐需要保护,因为如果盐被释放,可以生成一个新的彩虹表,从而不需要盐?它是否正确?或者盐真的不需要保密吗?为什么会这样?
c# - 如何改进我的 RainbowTable-Generator?
我生成彩虹表,如下所示。
现在有两个问题:
- 如何在不使用 bigint(例如 2 个嵌套的 for 循环) 的同时保留顺序(意味着字母 0-9 从 0 到 99 计数 2 位)如何做到这一点?
- 利用所有处理器插槽和所有内核更快/最有效地生成哈希表的各种方法是什么?
在 2) 上,我的做法是将范围划分为不同的组,并在线程中执行。
然而,这不会使用不同的内核,除非 .NET 自动执行此操作(我有 4 个处理器,每个处理器有 2 个内核)。
c - 彩虹表的实现
我正在尝试对 GSM 网络 KASUMI 密码实施彩虹表攻击的在线阶段。
我没有使用完整的 128 位密钥空间,只有 32 位。下面是我的实现。我已经生成了一个彩虹表,每行有 2 个25行和 2 个7.88链链接,这应该给出 73% 的成功率。
为了节省空间,我们只保存端点。表保存为二进制文件。我可以通过检查端点在表中的位置来找到一个起点。所以第三个端点的起点是 md5 of 3,第四个端点的 md5 是 4,依此类推。
所以问题是当使用随机密钥进行测试时,我得到了 10-15% 的成功率。为了检查我们是否生成了正确的链,我使用了起点作为键,在这里我得到了 100% 的成功,这是预期的。
我担心它可能与字节顺序有关,但我不确定。
c - 并行化一个函数
我正在尝试对此函数实现并行性,我希望它尽可能多地占用线程,并将结果写入文件。
结果需要以递增的顺序写入文件,因此需要先写入第一个结果,然后再写入第二个,依此类推。
keyGen 函数只是一个整数 m 的 MD5,用作每个链的起点。Reduction32 是一个归约函数,它将前 8 个字节加上 t 并返回该值。当一个链到达它的端点时,它被存储在二进制文件中。
有没有一种聪明的方法可以使这种平行?没有搞砸端点存储的顺序?
hash - 彩虹表 - 如何选择起始明文
我正在执行一项任务,其中给了我 1000 个 SHA1 摘要及其相应的密码(每个 24 位或 6 个十六进制数字长)。我必须在磁盘上和 Java 中构建一个 <2MB 的彩虹表,我发现链长度 > 192 会使搜索过程太慢。
要求是这个彩虹表应该解决至少 45%(或 450)个哈希并返回密码。归约函数很简单 - 从哈希中获取最高有效的 32 位(比如说 d0、d1、d2),将链的当前长度(i 从 0 到 191)仅添加到 d0(如下所示),然后:
我确信代码(散列和归约)函数是正确的。但是我只能通过这种方式解决大约 250 个哈希(25% 的准确率)到他们相应的密码。
如果我增加链的数量,我会看到相应数量的哈希解决的收益递减。就像如果我将链数加倍,精度不会加倍,但彩虹表的大小已经> 2MB(它像8MB)。
对于起始词 - 我尝试从 0 开始(完整范围为 0 到 2^24)并以 1 递增,或者我什至尝试使其在此范围之间随机化。彩虹表没有循环,即使在归约函数中发生了一些冲突(与归约函数的深度相同,如上所述不同),我不接受端点已经在表中的链。
如果我能将准确率提高到 45%,我将不胜感激。
hash - sha256 salted 有没有机会用彩虹表来“解密”呢?
如果我们已经知道盐,我想问是否有机会在盐渍哈希上使用彩虹表。首先,我想介绍一下哈希系统。
每一个都是使用 3 个不同输入的 SHA-256 哈希计算的。首先,是服务器种子。这是过去某个时间生成的预计算值。种子是在链中生成的,这样今天的种子就是明天种子的哈希。
种子 0 => 种子 1 => 种子 2 => 种子 3
接下来,用纽约彩票的 Take 5 游戏的结果对服务器种子进行加盐(加扰)。每天美国东部标准时间晚上 11:21 绘制,这些结果(填充为 0)附加到服务器种子以供第二天使用。
最后,每卷都用唯一的轮 id 加盐,确保每卷都有不同的哈希值。
该轮的哈希是使用 SHA256("serverseed-lottery-roundid") 生成的。取结果哈希的前 8 个十六进制数字并转换为十进制会产生一个介于 0-4294967295 之间的整数。取模 15 会产生 0-14 范围内的最终掷骰。
我按时间顺序为您添加了一些有关这些种子和盐的示例:种子:
1# 08659e6ef7759d68c4a4d8b214217394c5f2b1a539cc51cc5f89be1f55ab737b
2# 6d7ef31d654c30b2113019de67b0bc5bd400c41fc1d916937f2aee378772480c
3# 37e9469b09afca5a985170684d18ece4e881bea5d5f22af8df1049129351b976
盐类:
1# 0406161724
2# 1020273438
3# 0111293436
种子数指盐数,1#从2016年1月19日开始
最后,这是一些带有这些输入的 php 实现。
$seed = "39b7d32fcb743c244c569a56d6de4dc27577d6277d6cf155bdcba6d05befcb34";
$盐=“0422262831”;
$round_id = "1";
$hash = hash("sha256",$seed."-".$salt."-".$round_id);
$roll = hexdec(substr($hash,0,8)) % 15;
echo "回合 $round_id = $roll";
如果您能帮助我完成这些声明,我将不胜感激 :)
hash - 了解哈希表和彩虹表
所以我试图更好地理解哈希表和彩虹表,在我的阅读中,我觉得我开始掌握它的窍门。有一个检查你的知识问题是这样的:
“如果您有一个存储 sha-256 密码的哈希表,并且您希望将整个表存储在内存中,并且您有 4GB 的内存,您可以破解多少个密码?如果您使用每个链中有 20 个密码的 Rainbow 表,你能破解多少个密码?(假设密码是 10 个字符)"
这完全让我怀疑我是否对我所读的内容有所了解。所以这就是我到目前为止想出的。
如果每个 ShA-256 哈希的大小始终为 256 位,并且我们知道单个兆字节中有 8388608 位,则等于每兆 32768 个 SHA-256 密码。4000 兆,所以我们将 32768 乘以 4000,得出存储在内存中的 131072000 个密码。
但是如何将它应用于彩虹表中的 20 个链密码?我认为彩虹表存储了哈希值和它们的反面,这样虽然它占用了更多空间,但它可以更快地解决。是否有公式或其他东西可以确定我丢失了多少空间,从而丢失了多少密码?
非常感谢任何帮助或知识。我感谢您的时间和智慧。:)
dictionary - 彩虹表和密码
我在 Bruce Schneider 的书中遇到了这个问题。
我们知道 Rain bow 表可以用于存储的哈希。假设文件(英文文本)使用密码加密,使用以下方案。
密码经过哈希处理,哈希用于通过 AES 加密文件。密码被存储,密码和散列被丢弃。说明: 1. 如何使用字典攻击来恢复密码。2. 为什么彩虹桌不可用?3. 如果文件具有已知的标准头,如何使用彩虹表。
我可以理解问题 1 和 2。但我无法解决问题 3。请帮忙。
python - Python多进程不终止
我是 python 多进程的新手,我想了解为什么我的代码不会终止(可能是僵尸或死锁)以及如何修复它。这些createChain
函数还执行一个 for 循环并返回一个元组:(value1, value2)
。在createChain
函数内部还有对其他函数的其他调用。我不认为发布createChain
函数代码会有所帮助,因为在该函数内部我没有做有关多进程的事情。我试图将进程设置为守护进程,但仍然无法正常工作。奇怪的想法是,如果我将 ie 的值降低maxChains
到 500 或 100 就可以了。
我只是希望该过程执行一些繁重的任务并将结果放入数据类型中。
我的python版本是2.7