关于散列数查表问题

 实际存储方式有问题。
首先要明白一个概念性的问题:
加密只有解密(破解)的问题,散列只有碰撞(伪造)的问题。


对于一个散列数,实际碰撞会很多的,且有一定规律可寻,正如王晓云教授找到MD5碰撞的规律。


我们可以用一个日常生活来举例,攻破巨型数据库查表问题:


某日必定对应一个星期,例如今天是周一。
星期的周期是7天,即每7天为某星期几。
但是星期几却不知是具体的某日。


假若用数据库来存储星期散列数0~6(周日周一~周六),那么要存储多少日期???
故无法实现,即使可行也不现实。


HotWC3单向散列函数就是基于碰撞实现的,某个散列值对应巨多的原文信息。
即多对一的问题,就是日期和星期的关系。无法查表。


而且原文信息变长,这是散列函数的特性。
任意长度的原文信息都会经过散列函数被散列为固定长度的散列值。
从一个方向运算很容易,而从另一个方向运算很难。
故只有知道了用户密码才很容易计算出散列值,反之从散列值还原出用户密码几乎不可能实现。因为碰撞很多,而只有一个是对的。


菜农的CRC安全密码就是基于碰撞实现的。

猜你喜欢

转载自blog.csdn.net/HotWC3/article/details/7102530
今日推荐