设为首页
收藏本站
只需一步,快速开始
首页
Portal
论坛
BBS
问答
CTF社群
Group
CTF平台
每日签到
青少年CTF论坛
»
论坛
›
CTF
›
Crypto
›
查看内容
0 评论
0 收藏
分享
记一次关于hash.update的疑问
苑晴
发布于 2023-11-8 20:49:34
阅读 613
查看全部
来自
吉林
记一次关于hash.update的疑问 问题如下: ```python import hashlib for i in range(1, 100000000): res = hashlib.md5(str(i).encode('utf-8')).hexdigest() if res[:6] == '6d0bc1': print(i, res) 16217 6d0bc15654f2e248e7994fb0ea37762b 32856905 6d0bc135cd9a566e3795c34875c7014f 55599522 6d0bc1d301e3c1a7c8fbad0f1be343ff 65495741 6d0bc15993065bd3d52ca932ce26fa98 77595085 6d0bc16df28a72b1adc744bc00bd52f0 --------------------------------------------------------------------- import hashlib md5=hashlib.md5() admin = '6d0bc1' for i in range(100000000): md5.update(str(i).encode('utf-8')) if md5.hexdigest()[0:6]==admin: print (i, md5.hexdigest()) 2020666 6d0bc1153791aa2b4e18b4f344f26ab4 2305004 6d0bc1ec71a9b814677b85e3ac9c3d40 9162671 6d0bc11ea877b37d694b38ba8a45b19c 51302775 6d0bc1a762d786e2f6ef20f705109f10 ``` 上述两个程序看起来功能都一样,但是运行出来的结果却各有千秋,细看发现第二个程序中采用了hash.update函数,而update函数的功能是类似于字符串拼接的功能,示例如下: ```python for i in range(1, 3): md5.update(str(i).encode('utf-8')) ``` 而其等价于: ```python md5.update(str(1).encode('utf-8') + str(2).encode('utf-8')) ``` 所以问题在于第一个程序是通过不停地更新变量值然后进行对应字符串匹配输出,而第二个程序会将后一个字符串与前一个字符串拼接后再进行对应字符串匹配输出,所以导致结果不相同。
回复
举报
使用道具
分享
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
上一篇:
Morse wp
下一篇: 没有了
全部回复
暂无回帖,快来参与回复吧
返回列表
发新帖
本版积分规则
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
苑晴
版主
主题
11
回复
24
粉丝
3
加好友
发私信
热点排行
1
题目:再签到一次
2
【新平台】回复换FLAG啦!
3
【活动】你知道小光的答案吗?
4
【活动】小光的答案之书
5
LiHua's checkme WP
6
入门需要怎么做?
7
取证-SSH-04
8
misc中怎么分辨各工具加密后的数据
9
sqlmap连接不到目标RUL
10
做题的时候用了pwntools的 SigreturnFrame()直接报错了有大佬能看看吗
快速回复
返回顶部
返回列表