BUUCTF 每日打卡 2021-3-29

引言

新的一周,计划执行的第二天
又萌生出了一个新的计划:600多页的 C Primer Plus 只要我每天看20页就能一个月看完😂
不过下个月决定学GO语言,不知道能不能执行计划(咕咕咕)

丢失的MD5

原题代码:

import hashlib   
for i in range(32,127):
    for j in range(32,127):
        for k in range(32,127):
            m=hashlib.md5()
            m.update('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM')
            des=m.hexdigest()
            if 'e9032' in des and 'da' in des and '911513' in des:
                print des

是用python2写的,仅仅修改了print,还是会报错

Traceback (most recent call last):
  File "D:/BUUCTF/Crypto/丢失的MD5/丢失的MD5/md5 (2).py", line 6, in <module>
    m.update('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM')
TypeError: Unicode-objects must be encoded before hashing

要对 m.update() 部分进行 utf-8 编码
修改完后代码如下:

import hashlib   
for i in range(32,127):
    for j in range(32,127):
        for k in range(32,127):
            m=hashlib.md5()
            m.update(('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM').encode('utf-8'))
            des=m.hexdigest()
            if 'e9032' in des and 'da' in des and '911513' in des:
                print(des)

然后运行结果为:

e9032994dabac08080091151380478a2

之后就不知道要干什么了
搜了搜题解[捂脸],结果说flag就是输出部分(wtm人傻了)

当然,搜题解之前搜了搜关于 MD5 的资料(对于哈希函数这块一直是云里雾里的)
MD5加密算法:https://www.tomorrow.wiki/archives/503来源TOMORROW星辰:www.tomorrow.wik
简单概括起来,MD5 算法的过程分为四步:处理原文,设置初始值,循环加工,拼接结果。(底层实现非常复杂)
破解MD5加密算法:https://www.tomorrow.wiki/archives/562来源TOMORROW星辰:www.tomorrow.wik
破解算法都是利用 MD5 碰撞原理:被加密的数据与 MD5 加密算法所生成的哈希值并不是一一对应的关系,而是多对一,也就是说不同的数据经过 MD5 加密算法处理后,可能生成同样的 MD5 哈希值。通过碰撞寻找可以生成相同的哈希值的数据来实现破解。
其中暴力破解法的时间成本太高了,字典法则是空间成本太高,彩虹表法的时间成本和空间成本都较为均衡,相对较低,实用性更强。但是,计算机技术发展现在,利用分布式技术仍是可以有效利用以上方法进行破解 MD5 加密的。因此,这些方法都是有广泛应用的。
2004 年,中国数学家王小云等提出了一种新的 MD5 碰撞方法,使得 MD5 加密算法破解的效率大大提高。
2009 年,冯登国、谢涛提出了利用差分攻击的,使得 MD5 加密算法的破解复杂度进一步降低。
百度上搜的差分攻击(看不懂):https://baike.baidu.com/item/%E5%B7%AE%E5%88%86%E6%94%BB%E5%87%BB

一个小插曲:
在这里插入图片描述
我还特地搜了一下,我是不会告诉你们俗称“拉面女神”的[滑稽]

结语

第二天,希望能坚持

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值