- 浏览: 253336 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
mabusyao:
漠北空城 写道请问下,你这个是JDK版本是多少呢?!忘记了,应 ...
HashMap 源码解读 -
漠北空城:
请问下,你这个是JDK版本是多少呢?!
HashMap 源码解读 -
schumee:
完美团队~
项目沉思录 - 1.1 -
winie:
整理下 搞成引擎嘛 国产需要这样的engine
简单工作流引擎 -
mabusyao:
某位同学给我提供的堪称完美的解决方案:1. 将三个int数组放 ...
CraneWork
感谢因特网提供的便利,暂时先放着,以后慢慢理解
转载 http://www.partow.net/programming/hashfunctions/
转载 http://www.partow.net/programming/hashfunctions/
/* ************************************************************************** * * * General Purpose Hash Function Algorithms Library * * * * Author: Arash Partow - 2002 * * URL: http://www.partow.net * * URL: http://www.partow.net/programming/hashfunctions/index.html * * * * Copyright notice: * * Free use of the General Purpose Hash Function Algorithms Library is * * permitted under the guidelines and in accordance with the most current * * version of the Common Public License. * * http://www.opensource.org/licenses/cpl1.0.php * * * ************************************************************************** */ class GeneralHashFunctionLibrary { public long RSHash(String str) { int b = 378551; int a = 63689; long hash = 0; for(int i = 0; i < str.length(); i++) { hash = hash * a + str.charAt(i); a = a * b; } return hash; } /* End Of RS Hash Function */ public long JSHash(String str) { long hash = 1315423911; for(int i = 0; i < str.length(); i++) { hash ^= ((hash << 5) + str.charAt(i) + (hash >> 2)); } return hash; } /* End Of JS Hash Function */ public long PJWHash(String str) { long BitsInUnsignedInt = (long)(4 * 8); long ThreeQuarters = (long)((BitsInUnsignedInt * 3) / 4); long OneEighth = (long)(BitsInUnsignedInt / 8); long HighBits = (long)(0xFFFFFFFF) << (BitsInUnsignedInt - OneEighth); long hash = 0; long test = 0; for(int i = 0; i < str.length(); i++) { hash = (hash << OneEighth) + str.charAt(i); if((test = hash & HighBits) != 0) { hash = (( hash ^ (test >> ThreeQuarters)) & (~HighBits)); } } return hash; } /* End Of P. J. Weinberger Hash Function */ public long ELFHash(String str) { long hash = 0; long x = 0; for(int i = 0; i < str.length(); i++) { hash = (hash << 4) + str.charAt(i); if((x = hash & 0xF0000000L) != 0) { hash ^= (x >> 24); } hash &= ~x; } return hash; } /* End Of ELF Hash Function */ public long BKDRHash(String str) { long seed = 131; // 31 131 1313 13131 131313 etc.. long hash = 0; for(int i = 0; i < str.length(); i++) { hash = (hash * seed) + str.charAt(i); } return hash; } /* End Of BKDR Hash Function */ public long SDBMHash(String str) { long hash = 0; for(int i = 0; i < str.length(); i++) { hash = str.charAt(i) + (hash << 6) + (hash << 16) - hash; } return hash; } /* End Of SDBM Hash Function */ public long DJBHash(String str) { long hash = 5381; for(int i = 0; i < str.length(); i++) { hash = ((hash << 5) + hash) + str.charAt(i); } return hash; } /* End Of DJB Hash Function */ public long DEKHash(String str) { long hash = str.length(); for(int i = 0; i < str.length(); i++) { hash = ((hash << 5) ^ (hash >> 27)) ^ str.charAt(i); } return hash; } /* End Of DEK Hash Function */ public long BPHash(String str) { long hash = 0; for(int i = 0; i < str.length(); i++) { hash = hash << 7 ^ str.charAt(i); } return hash; } /* End Of BP Hash Function */ public long FNVHash(String str) { long fnv_prime = 0x811C9DC5; long hash = 0; for(int i = 0; i < str.length(); i++) { hash *= fnv_prime; hash ^= str.charAt(i); } return hash; } /* End Of FNV Hash Function */ public long APHash(String str) { long hash = 0xAAAAAAAA; for(int i = 0; i < str.length(); i++) { if ((i & 1) == 0) { hash ^= ((hash << 7) ^ str.charAt(i) * (hash >> 3)); } else { hash ^= (~((hash << 11) + str.charAt(i) ^ (hash >> 5))); } } return hash; } /* End Of AP Hash Function */ }
发表评论
-
大数据下的实体解析
2016-07-07 12:03 671大数据时代的实体解析困境 <!--[if !sup ... -
中文相似度匹配算法
2015-12-30 14:44 1921基于音形码的中文字 ... -
各种语言写的wordcount
2015-09-24 16:07 0Java版本: String input ... -
数组双指针算法的研究
2015-07-14 16:59 2461双指针算法在数组/链 ... -
摩尔投票法
2015-06-30 20:13 18413摩尔投票法 提问: 给定一个int型数组,找出该数 ... -
(转)最长回文字串算法
2015-01-18 14:30 1438来自(http://blog.163.com/zhaohai ... -
STRUTS2 源码 - Logging System
2012-05-24 08:51 1405看了STRUTS2的源码,了解了它的logging系统,觉得还 ... -
在线词典的数据结构实现。
2012-05-18 08:37 0昨天在网上看到了一道百度的面试题: Baidu写道 ... -
存储中间计算结果的动态规划算法
2012-04-18 15:50 1218public class RodCutting { ... -
java写的四则运算器
2011-08-19 22:19 2723本打算做一个从RE到NFA的转换器,思路已经理清了,但是在动手 ... -
什么是最小二乘拟合
2007-09-14 21:27 963对于一个数据点(x1, y1), ... (xn, yn)的集 ... -
palindrome
2008-07-14 17:39 985package palindrome;/*Problem St ... -
CraneWork
2008-07-14 19:14 1033/*Problem Statement There are ... -
SalesRouting
2008-07-15 10:53 798package salesRouting;/*Problem ... -
FactorialSystem
2008-07-21 19:36 856/*Problem StatementIn the facto ... -
RecurringNumbers
2008-07-22 09:41 916/*Problem StatementA rational n ... -
HardDuplicateRemover
2008-07-23 15:17 935/*Problem StatementWe have a se ... -
BlockStructure
2008-07-23 20:55 800/*Problem StatementA group of v ... -
SkipStones
2008-07-28 17:31 826/*Problem StatementWhen a stone ... -
TheaterVisit
2008-07-28 17:31 784/*Problem StatementYou want to ...
相关推荐
在计算机科学中,哈希(Hash)算法是一种用于将任意长度的数据映射为固定长度输出的函数。这种输出通常称为哈希值或消息摘要。在Java编程语言中,实现哈希算法可以方便地用于数据验证、查找表以及密码存储等多种用途...
Hash函数集合,包含主流的hash函数: nginx_hash算法,OpenSSL_hash算法,RSHash,JSHash,PJWHash,ELFHash,BKDRHash,DJBHash,DEKHash,APHash等等!
在IT领域,哈希算法(Hash Algorithm)是一种用于将任意长度的数据转化为固定长度输出的算法。这个过程通常称为哈希或散列。哈希算法在信息安全、数据完整性验证、密码学等多个方面都有着广泛的应用。本项目是用...
### Hash算法相关介绍 在计算机科学领域,哈希(Hash)是一种将任意长度的数据映射为固定长度数据的技术。哈希算法广泛应用于多种场景中,包括但不限于数据完整性验证、密码存储、快速查找等。本文主要介绍了几种...
本文档主要介绍了多种常见的Hash算法,并重点推荐了FNV1(Fowler–Noll–Vo)算法。 #### 二、Hash算法概述 Hash算法具有以下特点: - 输入可以是任意长度。 - 输出总是固定长度。 - 对于不同的输入,输出应当尽...
哈希(Hash)算法在计算机科学中扮演着重要的角色,特别是在数据存储、文件校验、信息安全等领域。本文将深入探讨哈希算法的原理,并提供一个简单的C语言实现示例。 哈希算法,又称为散列函数,是一种将任意长度的...
Go语言标准库中提供了多种内置的哈希函数,如`hash.Hash`接口,它支持`MD5`、`SHA1`、`SHA256`等常见算法。然而,在特定的应用场景下,我们可能需要更快、更节省内存的哈希算法,这正是`fasthash`项目所关注的。 `...
#### 六、常见的安全Hash算法 - **MD4**: MD4是MIT的Ronald L. Rivest于1990年设计的一种消息摘要算法,其输出长度为128位。虽然最初被认为是安全的,但现在已经被证明存在漏洞,不再推荐使用。 - MD4("") = 31d6...
标题中的"SPlayer视频文件hash算法"指的是射手播放器(SPlayer)用于识别和验证视频文件的一种特定技术。这种算法能够生成一个唯一哈希值(hash value),也称为特征码,来表示文件的内容。哈希算法在信息技术中广泛...
在【标题】"常见的Hash算法.pdf"中,我们可以推断文件可能涵盖了多种常见的哈希算法,包括但不限于MD5、SHA-1、SHA-256等。这些算法各有特点,但它们的核心目标都是尽可能地减少输入数据的哈希碰撞,即不同的输入...
标题和描述提到的“几种常见的hash算法1”主要是针对哈希算法在不同应用中的使用及其特性进行的探讨。 首先,哈希算法的理论基础是单向函数,它是一种在给定输入时容易计算输出,但在给定输出时难以反推输入的函数...
#### 三、常见的Hash算法 目前常用的Hash算法包括MD4、MD5、SHA-1等。这些算法各有特点: - **MD4** 和 **MD5**:早期较为流行的Hash算法,但由于近年来发现的一些漏洞,它们的安全性受到了质疑,特别是对于强抗...
在本篇文章中,我们将深入探讨7种常见的哈希算法,以及如何使用C语言实现它们。 1. **MD5(Message-Digest Algorithm 5)** MD5是最著名的哈希函数之一,由Ronald Rivest在1991年设计。它产生一个128位(16字节)...
本文将基于提供的“HASH算法实例源码”进行详细讲解,包括哈希算法的基本概念、工作原理以及源码分析。 哈希算法,又称为散列函数,是一种能够将任意长度的输入(也叫做预映射或消息)转化为固定长度输出的函数。这...
《深入理解各种Hash算法与hashCodeUtil》 在计算机科学中,Hash算法扮演着至关重要的角色。它们是一种将任意长度的数据转换为固定长度输出的函数,通常用于数据索引、快速查找、消息摘要等场景。本篇文章将深入探讨...
Objective-C 中 NSString 关于常见 Hash 算法的分类,能对字符串,文件进行 Hash 运算,具备 HMAC 功能。支持的 Hash 算法有:MD5、SHA1、SHA256、SHA512。
在Java中,实现Hash算法有多种方法,这里我们将探讨几种常见的Hash算法及其Java实现。 1. **加法Hash**: 加法Hash算法是最简单的形式,通过将字符串中的每个字符的ASCII值累加,然后取模一个质数得到哈希值。这种...