【发布时间】:2013-05-28 13:16:21
【问题描述】:
我正在学习密码学并使用 OPENSSL 来实现我所学的一切。最近,我找到了one of the assignment questions 并正在尝试解决它。除了这个问题,我对大多数问题的理解都没有问题。
4 任务 2:单向属性与无冲突属性 在这项任务中,我们将研究常见散列函数的两个属性之间的区别:单向 财产与无碰撞财产。我们将使用蛮力方法来看看需要多长时间才能破解 这些属性中的每一个。而不是使用 openssl 的命令行工具,你需要编写你的 自己的 C 程序来调用 openssl 加密库中的消息摘要函数。文档可以在 http://www.openssl.org/docs/crypto/EVP_DigestInit.html。 计算机安全教育实验室,CMSC 414,2013 年春季 2 由于大多数哈希函数对这两个属性的暴力攻击非常强大, 使用蛮力方法破解它们需要数年时间。为了使任务可行,在所有这些 项目我们将哈希值的长度减少到 24 位。我们可以使用任何单向哈希函数,但我们 仅使用哈希值的前 24 位。 编写一个程序,给定一个 24 位的哈希值,找到一个匹配的文本(只有小写的 ASCII 字符) 条款)。您的程序将不得不重复 1) 生成随机文本,2) 对其进行哈希处理,3) 比较低 24 位 到输入。 您的程序(源代码必须称为 task2.c)将按如下方式调用:
./task2 <digest name> <hash value>
例如,
./task2 sha256 2612c7. . .,您的程序必须将获胜文本写入 task2.out。 请确保输出可读可写,即:
open("task2.out", O`enter code here` WRONLY | O CREAT, 0644);
我们将使用命令行工具进行验证,例如
openssl dgst -sha256 task2.out。 问题:您必须散列多少文本才能找到特定的散列? (给出三个试验的平均值)
我无法理解如何开始编写我的程序。非常感谢任何输入。因为我不是为家庭作业解决它。我正在寻找一些指针,而不是代码。
【问题讨论】:
标签: c++ openssl brute-force oneway