怎么得到一个纯数字的哈希?

2013-06-04 17:31:30 +08:00
 kenneth
算法是怎样的?不喜欢md5,因为都字母,想要一个纯数字的有木有。
4850 次点击
所在节点    程序员
15 条回复
RoyLaw
2013-06-04 17:33:49 +08:00
拿十进制表示不就是纯数字了么...
swulling
2013-06-04 17:46:26 +08:00
md5输出结果是128-bit的数字啊。。。
aisk
2013-06-04 17:47:33 +08:00
直接拿这数字表示就可以,python就是这么干的
kenneth
2013-06-04 17:54:02 +08:00
@RoyLaw
@swulling
@aisk

能否show me your code in python
gonghao
2013-06-04 17:58:19 +08:00
int(md5.md5('foo').hexdigest(), 16)
aisk
2013-06-04 18:06:04 +08:00
In [8]: hash(1)
Out[8]: 1
aisk
2013-06-04 18:07:52 +08:00
@aisk 哦我理解错了,一开始理解的是“如何得到一个 数字 的哈希值”,楼主想要的是任意值的哈希结果,结果是纯数字
kenneth
2013-06-04 18:13:37 +08:00
@aisk 对的,你明白了。
@gonghao 整形长度能任意?碰撞概率大概是怎样,就是容易不容易出现重复。
gonghao
2013-06-04 18:16:15 +08:00
@kenneth int 是从 hexdigest 里面转换的,碰撞概率不在 int 上,在 md5 上
kenneth
2013-06-04 18:23:57 +08:00
@gonghao 我能否控制这个int的长度?
yangzh
2013-06-04 19:31:27 +08:00
md5 就是一串数。把16进制转换成10进制就可。当然对这是一个很大的数。要对位数的空间比较大。

另外可参照 http://segmentfault.com/q/1010000000142006
Sunyanzi
2013-06-04 19:33:44 +08:00
@yangzh .... 我刚想来自己王婆卖瓜一下 ... 就发现了楼上的回复 ...

恩 ... 谢谢 ...
plprapper
2013-06-04 22:16:32 +08:00
对md5的值做一些处理 比如转成byte数组,然后进行一些^运算,最后做一些<< 拼成个long
kenneth
2013-06-04 22:18:57 +08:00
@Sunyanzi
@yangzh

高手能否给出代码?最好python的
如何得到 http://segmentfault.com/q/1010000000142006
中的1010000000142006
clowwindy
2013-06-05 10:46:48 +08:00
hash("foobar")

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/71218

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX