作者:冲出宇宙
时间:2005年10月30日
转载请注明作者。
本文详细描述了hash算法的通用模式,在这个基础上对目前作为标准的几种主要hash算法进行了一些分析:md5,ripemd系列,sha系列,tiger以及刚加入到标准不久的whirlpool。给出了部分算法的代码。
1 hash定义
传统hash函数的定义:一个hash函数满足下列条件:
- 对于不定长度的输入有一个固定的输出
- 输出容易计算
我们目前所说的hash,已经不是传统意义上的普通散列了。按照密码学的定义,hash函数其实就是一个单向函数。一个函数f是单向的,如果f满足:
- y = f(x)容易计算
- 在已知y和函数f的情况下,找到满足y = f(x)的x是十分困难的
简单一点说,单向函数就是后向函数,只能计算以后的值,不能计算以前的值。
对称加密函数也是单向函数。不同的是,这些单向函数具有陷门。陷门相当于后门一样