首页
社区
课程
招聘
[原创]HASH算法简单介绍
发表于: 2009-6-15 06:21 10429

[原创]HASH算法简单介绍

2009-6-15 06:21
10429
收藏
免费 7
支持
分享
最新回复 (16)
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
2
f : A --> B . 输入为A, 长度不固定. 输出为B, 一般B的长度是定好的

我建議把 “一般”這個字去掉,雖然我知道 jackozoo 很口語的表達這個敘述。

除了 Pre-image 之外,是否方便,再為我們大家介紹 Second Pre-image 及 Collision 等概念。
謝謝。
2009-6-15 06:49
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
3
Second Pre-image 及 Collision 这些我都不了解, 我还菜的很~

我的chap12是讲HASH应用的, 呵呵.  所以HASH Cipher的深层次东西就不用我讲了, 我也将不了的 ~

我本来打算把这贴删掉的~ 最后想还是算了~  

见笑了, ~ 随便写的一烂帖~
2009-6-15 07:32
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
4
說的很簡單,清楚及易懂啊。
你這樣說,就客氣過頭囉。
2009-6-15 07:44
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
5
其实你写的这两个示范程序都有问题, 虽然原理上你说对了, (A+B) % C = A%C + B%C, 但代码中还是没处理好溢出的问题.
第一个例子: 假设 A[] = { 0xff, 0xff, 0xff};
i = 0, B = 0 + 0xff = 0xff, B%256=0xff
i = 1, B = 0xff + 0xff = 0xfe, B%256=0xfe  <=== 在%256前B已经溢出了.
好在是%256, 要是%255怎么办?
第二个例子: 首先, 初始值 B=0 ?! 乘法, 应该是1吧?
假设 str[] = { 0xff, 0xff, 0xff, 0xff, 0xff};
i = 0, B = 1 * 0xff = 0x0ff, B%0xffffffff=0x0ff
i = 1, B = 0xff * 0xff = 0xfe01, B%0xffffffff=0xfe01
i = 2, B = 0xff * 0xfe01 = 0xfd02ff, B%0xffffffff=0xfd02ff
i = 3, B = 0xff * 0xfd02ff = 0xfc05fc01, B%0xffffffff=0xfc05fc01
i = 4, B = 0xff * 0xfc05fc01 = 0x09f604ff, B%0xffffffff=0x09f604ff  <=== 在%0xffffffff前B已经溢出了. 实际值应该是0xfb09f604ff, %0xffffffff = 0x9f605fa.
正确的做法是第一个例子中B至少是16位的数, 第二个例子B至少是64位的数.
2009-6-15 23:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼主不厚道 明明是网上的帖子。。
2009-6-15 23:22
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
7
LS的你有什么证据? 你的处女贴就这样浪费了~
2009-6-16 10:12
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
8
[QUOTE=arab;642347]其实你写的这两个示范程序都有问题, 虽然原理上你说对了, (A+B) % C = A%C + B%C, 但代码中还是没处理好溢出的问题.
第一个例子: 假设 A[] = { 0xff, 0xff, 0xff};
i = 0, B = 0 + 0xff = 0xff, B%256=0xff
i ...[/QUOTE]

果然是一烂贴 ,      该删掉的~

我当时就知道有溢出情况的, 不过心想管他了, 反正HASH吗, 别HASH到同一个值就好,, 呵呵、

结果那个累乘HASH那个,初始化为0确实太失败~

thanks arab分析如此详细~
2009-6-16 10:17
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
9
嗯, 自我批评下~  发生了溢出就导致文章中的说明与代码不相符合的情况、
大家不要学我啊。 哈哈~

p。s 熬通宵后更是不要发帖, 昏昏的,打字都不带检查的

这真是一烂贴~   幸好arab及时指出。 不然又要误导新手了~  抱歉ing。。。
2009-6-16 10:25
0
雪    币: 6
活跃值: (1141)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
呵呵,楼主精神可嘉,继续努力
2009-6-17 13:11
0
雪    币: 270
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
arab好厉害,很认真啊
2009-6-22 17:53
0
雪    币: 21
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
支持一下。我觉得刚开始,出点小差错大家应该多鼓励。
主要通过这样的方式,大家也能够学到想要学的东西。
对于错误进行讨论纠正就行,跟更能够加深认识。
2009-6-22 22:20
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
(A+B) % C = A%C + B%C .好像不太对吧?
(5+10)%3 = 0
5%3 + 10%3=3
2009-7-13 17:33
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
14
感谢JINN指出, 这里的确有点问题.
(A+B)%C = (A%C+B%C)%C 这样比较好.

再次感谢JINN对文中纰漏的指出.
2009-7-13 17:51
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
15
suggestions:
1)  選取 C 值時,建議 A,B < C ,也就是 C 要比 A 及 B 大,C 最好是 prime number。

2)  不論是 (A+B)%C 或是 (A%C+B%C)%C,看來似乎不是很適合當做 HASH function,當入門練習之用倒可以,不然就是把式子改寫。
【分享】Handbook of Applied Cryptography 第 9 樓 Chapter 9 有談到 Hash function 的原理及設計。
2009-7-13 19:24
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
Hash值现在密码机都可以跑出来,抗碰撞性是不是没有传说中的那么强?
2009-7-16 02:12
0
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
不懂C++,但是的确有问题
2009-7-16 11:51
0
游客
登录 | 注册 方可回帖
返回
//