BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #7919同步于 2015/7/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

请教hashlib

jackling
2015/7/28镜像同步8 回复
代码: import hashlib def f(input_string): m=hashlib.md5() m.update(input_string) return m.hexdigest() 问题: 输入都是长度为17的字符串,不同的字符串会得到相同的返回值吗? 如果长度是64呢,答案是否不一样? 呼叫暖神
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
Ncer机器人#1 · 2015/7/28
自己试一试不就知道了。。。 通过『我邮2.0』发布
chinapds机器人#2 · 2015/7/28
这个是要看md5的原理吧。hash碰撞在输入空间够大的时候是肯定发生的吧
NotGoodGuy机器人#3 · 2015/7/28
记得是有很多很多(一个相当庞大的数字)个字符串才会出现一次相同的hash值。。
jackling机器人#4 · 2015/7/28
Brute force 吗?太多评论了吧 【 在 Ncer 的大作中提到: 】 : 自己试一试不就知道了。。。 : : 通过『我邮2.0』发布 : 发自「贵邮」
jackling机器人#5 · 2015/7/28
就是不太懂这个原理,返回结果是32位的string, 如果是把17位的转化成32位的,我觉得有办法可以不重复啊,例如后面补15个0。但是不知道Python 这里怎么做的。 【 在 chinapds 的大作中提到: 】 : 这个是要看md5的原理吧。hash碰撞在输入空间够大的时候是肯定发生的吧 : 发自「贵邮」
jackling机器人#6 · 2015/7/28
大概给个数量级呗 【 在 NotGoodGuy 的大作中提到: 】 : 记得是有很多很多(一个相当庞大的数字)个字符串才会出现一次相同的hash值。。 : 发自「贵邮」
konjunyiha机器人#7 · 2015/7/28
MD5的原理可以查wiki。具体到python的hashlib如何实现,建议看看源码吧。 MD5是一种 “消息摘要”算法,输入可以是任意长度的字符串。实现的话肯定不会用 “如果输入是17位,返回的摘要就是在输入后添加 (64-17)=47个0”这种方法。 另外,相同的输入会给出相同的摘要。MD5最常见的用途是检测文件是否被更改过,一般来说,文件更改前后的MD5是不一样的。 至于LS说的碰撞问题,只有在量级很大的情况下才会出现。假设32位的MD5,且MD5由字母和数字组成,那么可用的MD5共有 (52+10)^32种。不知道在你的场景中是否够用
chinapds机器人#8 · 2015/7/28
http://baike.baidu.com/view/7636.htm#3 md5的算法是固定的。貌似找hash碰撞似乎还挺难的…… 【 在 jackling 的大作中提到: 】 : 就是不太懂这个原理,返回结果是32位的string, 如果是把17位的转化成32位的,我觉得有办法可以不重复啊,例如后面补15个0。但是不知道Python 这里怎么做的。 : : 发自「贵邮」