zoukankan      html  css  js  c++  java
  • Rabin Hash及其他哈希算法比较

    Rabin Hash及其他哈希算法比较
    2009-11-21 22:32

    最近看了RabinHash相关的资料,写了写相关的一点程序。下面比较一下RabinHash和SHA1。

    RabinHash
    冲突率很小。它是将等计算文本看成由01串组成的一个很大的数或是多项式,对一个不可约的多项式取模得到结果。计算时间为线性时间,实现时可以仅用移位和异或,计算速度较快。对于固定长度的哈希,如果已知当前位置哈希值,则可以在常数时间内计算出向后移动一个单位的哈希值。这个性质可以用在文本匹配上,时间复杂度为O(n)。具体实现时,可以以字节或字为单位,提前打表记录移位,进一步提高速度。

    SHA1
    SHA1的全称是Secure Hash Algorithm(安全哈希算法)。加密哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。所以你很难从加密后的文字中找到蛛丝马迹。常用于数字签名。生成的哈希为160位,是一种不可逆的算法。计算过程有补位、补长度、使用常数、使用多个函数,是典型的杂凑哈希。

    MD5
    MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer Science和Rsa data security inc的Ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数).不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要.MD5 算法的哈希值大小为 128 位。是一种不可逆的算法。

  • 相关阅读:
    Spark之 SparkSql整合hive
    Spark之 使用SparkSql操作Hive的Scala程序实现
    Spark之 RDD转换成DataFrame的Scala实现
    Spark之 SparkSql、DataFrame、DataSet介绍
    Spark之 RDD
    Spark scala和java的api使用
    设计模式之四观察者模式
    设计模式之三静态代理模式
    设计模式之二装饰者模式
    设计思想之二面向接口编程
  • 原文地址:https://www.cnblogs.com/lexus/p/2495799.html
Copyright © 2011-2022 走看看