使用md5collgen进行MD5碰撞实验

这篇具有很好参考价值的文章主要介绍了使用md5collgen进行MD5碰撞实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目一

题目1:可在ubuntu主机上预先安装md5collgen,题目为“生成两个MD5哈希值一致但是文件内容不同的文件”。
所谓“文件内容不同但却有相同的哈希值”就是 碰撞。
在这个题目中,我们将生成两个具有相同MD5哈希值的不同文件。这两个文件的开始部分需要相同,即它们共享相同的前缀。我们可以使用md5collgen程序实现这一点,它允许我们提供具有任意内容的前缀文件。

md5collgen的原理

image.png
MD5将输入的数据按照64字节一组(M1-Mn)进行切分,然后在这些分组上进行迭代地计算。其核心是压缩函数,其接受两个输入,分别是64字节的数据分组和前一次迭代的输出,压缩函数compression function会输出128位的IHV(intermediate hash value),这个输出将在下一次迭代时参与运算。如果当前的迭代是最后一次,IHV就是最终的hash值。而第一次迭代IHV0的IHV的输入是固定值。

安装md5collgen

先从github下载md5collgen工具包源码,将其上传至ubuntu中(官网下载好像没makefile文件)
image.png
然后进行解压 unzip
image.png
sudo apt install build-essential
image.png
sudo apt install libboost-all-dev
image.png
然后执行make命,安装好md5collgen工具
image.png

利用md5collgen生成文件

在md5collgen-master下新建一个文本文件 prefix.txt(作为相同前缀的文件)
image.png
执行命令:

./md5collgen -p prefix.txt -o out1.bin out2.bin

image.png
目录下生成了对应的两个文件
image.png

diff out1.bin out2.bin
md5sum out1.bin
md5sum out2.bin

image.png
文件不一样,但哈希值一致。

hexdump -C out1.bin
hexdump -C out2.bin

在图形界面也可以看出,两个文件不一致
image.png
经观察可得两文件的前缀相同,文件内容有不同。通过分析md5collgen的原理可以明白形成这一现象原因。从prifix.txt中取前缀,若前缀不是64的倍数,则用零填充。md5collgen为两个输出文件生成128字节的内容,这两个输出文件就是在这128字节中存在部分差异。

题目二

新建一个文件source_code.c,用于存放源代码(并给定数组的内容)
image.png
执行编译:
image.png
编译后的结果:
image.png
在二进制文件中找到xyz数组的位置:

hexdump -C source_code

image.png
image.png
我们可以选择前 12480 个字节作为前缀prefix文件,中间12480到12608作为中间的128字节文件,后面第12609个字节到文件结束作为后缀suffix文件。

head -c 12480 source_code > prefix
tail -c +12609 source_code > suffix

image.png
前缀prefix文件:(部分)
image.png
后缀suffix文件:(部分)
image.png
用前缀prefix文件上运行md5collgen 来生成两个具有相同MD5散列值的输出(即数组内容相同):

./md5collgen -p task2_prefix -o task2_out1.bin task2_out2.bin

image.png

diff task2_out1.bin task2_out2.bin
md5sum task2_out1.bin
md5sum task2_out2.bin

image.png
可视化:
image.png
文件内容不同
image.png
哈希值相同文章来源地址https://www.toymoban.com/news/detail-820111.html

到了这里,关于使用md5collgen进行MD5碰撞实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • postman 请求参数进行md5加密

    1.在代码片段中,使用 JavaScript 将需要加密的参数拼接成一个字符串,例如 2.安装 CryptoJS 库。在 Postman 的 \\\"Pre-request Script\\\" 或 \\\"Tests\\\" 中,使用以下命令安装 CryptoJS: 3.在代码片段中,使用 CryptoJS 对拼接后的字符串进行 MD5 加密,转化为小写字符串,赋值给请求变量。例如:

    2024年02月05日
    浏览(38)
  • uniapp使用md5加密 js使用md5加密

    文章的初衷 最近项目中使用了md5加密,为了方便还不明白怎么使用的朋友参考查阅,当然也为了方便博主再次使用所写 md5加密说明 可在不同平台使用 因为使用方法是js方法去调用的所以不局限于某个平台 我这里使用的方式是登录的时候进行加密,具体其他的使用方式,朋友们自

    2024年02月07日
    浏览(55)
  • linux:md5命令以及md5的使用场景

    MD5广泛用于数据完整性校验和密码存储,它是一种不可逆的加密算法,目前无法解密。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。 在数据完整性校验中,MD5可用于验证数据的完整性。例如,在下载文件后,可以对下载

    2024年02月06日
    浏览(33)
  • Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

    在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的。最经典的就是密码了。如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的。 那么我们就需要对这些铭文进行加密。 现在市场是加密的方式已经

    2024年02月02日
    浏览(31)
  • 在前端对登录密码进行加密,md5+盐值

    场景:前端制定规则账号密码,后端不进行参与,完全就是前端进行校验 缺点:对于现在网络发达的时代,大部分人随便攻击你的网站就可以看到你的账号密码这样就可以轻松进入你的网站、不安全。 优点:基本没有,除非就是临时搭建 不需要后端 当然这是我开发时候的场

    2024年02月09日
    浏览(43)
  • Apifox&Postman请求参数进行SHA256/MD5加密

    Base64加密,代码如下: Base64解密,代码如下: MD5加密,代码如下: SHA256加密,代码如下

    2024年02月16日
    浏览(44)
  • 【MD5】什么是MD5?md5的简要描述

    MD5:英文全称是 Message-Digest Algorithm 5。 中文名为 消息摘要算法第五版。它是消息摘要算法,属于 Hash 算法的一种。 正常情况下,它的结果是一个 长度为 32位 的 16进制 的 字符串 。 也有一些地方会用到 16 位的 MD5的结果,它实际上是从 32位 字符串中取中间的第9位到第24位的

    2024年02月08日
    浏览(41)
  • PHP md5()函数详解,PHP计算MD5,md5()绕过,md5()漏洞原理剖析

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 md5() 可以计算字符串的 「MD5散列值」 。 语法 参数 $str :需要计算的字符串

    2024年02月06日
    浏览(33)
  • Java中MD5的使用

    在Java中,可以通过正则表达式来判断一个字符串是否是MD5字符。MD5字符通常是32位长度的十六进制字符串,因此可以使用如下的正则表达式进行判断: 文章中掘金

    2024年02月12日
    浏览(40)
  • vue3中使用md5

    推荐网站: MD5在线加密 - MD5加密工具 - MD5在线生成 MD5在线加密 https://md5jiami.bmcx.com/    推荐: vue3的md5如何使用以及导入_范闲~的博客-CSDN博客_vue3 md5 vue3的md5如何使用以及导入 https://blog.csdn.net/m0_60708088/article/details/125763415 默认32位小写 。 注意:md5()函数中的参数必须为字符串

    2024年02月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包