单向函数
单向函数
单向函数定义:
单向函数满足 对于所有属于 f 定义域的任一 x ,可以很容易计算 f( x ) = y; 对于几乎所有属于 f 值域的任一 y ,则在计算上不可能求出 x 使得 y = f( x )。
单向函数的交换性:
单向函数本身在近代密码学领域用处并不大。但若单向函数具有交换性,则其用处就很大。
交换性(Commutative Property ):
令Z为一集合,F为将Z映射至Z本身的函数集合。令z∈Z,F[x](z)表示此函数集合的第x个函数,若F[x](F[y])) = F[y](F[x](z)),则称此函数集合具有交换性。
具有关键性的单向函数是进行数据加密/编码的一种算法
单向函数一般用于产生消息摘要,密钥加密等,常见的有:
- MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值;
- SHA(Secure Hash Algorithm)这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值;
- MAC(Message Authentication Code):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子。
- CRC(Cyclic Redundancy Check):循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段(CRC 并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。
个人总结:
如果不写复杂的算法,我们只需要知道单向函数是真实存在的,同时知道有些单向函数具有交换性。