Java中常用的hash函数有什么
发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,今天就跟大家聊聊有关Java中常用的hash函数有什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。public class HashUtil
千家信息网最后更新 2025年11月18日Java中常用的hash函数有什么
今天就跟大家聊聊有关Java中常用的hash函数有什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
public class HashUtils { private static final int crctab[] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; public static int crc32Hash(String key) { int n = key.length(); int hash = n; for (int i = 0; i < n; ++i) hash = (hash >> 8) ^ crctab[(hash & 0xff) ^ key.charAt(i)]; return hash; } public static int additiveHash(String key) { int n = key.length(); int hash = n; for (int i = 0; i < n; i++) hash += key.charAt(i); return hash ^ (hash >> 10) ^ (hash >> 20); } public static int rotatingHash(String key) { int n = key.length(); int hash = n; for (int i = 0; i < n; i++) hash = (hash << 4) ^ (hash >> 28) ^ key.charAt(i); return (hash & 0x7FFFFFFF); } /** * @param key * @param prime * 31 131 1313 13131 131313 etc.. * @return */ public static int BKDRHash(String key, int prime) { int hash = 0; int n = key.length(); for (int i = 0; i < n; ++i) hash = prime * hash + key.charAt(i); return (hash & 0x7FFFFFFF); } public static int FNVHash(String key) { final int p = 16777619; int hash = (int) 2166136261L; int n = key.length(); for (int i = 0; i < n; i++) hash = (hash ^ key.charAt(i)) * p; hash += hash << 13; hash ^= hash >> 7; hash += hash << 3; hash ^= hash >> 17; hash += hash << 5; return (hash & 0x7FFFFFFF); } public static int RSHash(String key) { int b = 378551; int a = 63689; int hash = 0; int n = key.length(); for (int i = 0; i < n; i++) { hash = hash * a + key.charAt(i); a = a * b; } return (hash & 0x7FFFFFFF); } public static int JSHash(String key) { int hash = 1315423911; int n = key.length(); for (int i = 0; i < n; i++) { hash ^= ((hash << 5) + key.charAt(i) + (hash >> 2)); } return (hash & 0x7FFFFFFF); } // P. J. Weinberger Hash Function public static int PJWHash(String key) { int BitsInUnignedInt = 32; int ThreeQuarters = 24; int OneEighth = 4; int HighBits = (0xFFFFFFFF) << (BitsInUnignedInt - OneEighth); int hash = 0; int test = 0; int n = key.length(); for (int i = 0; i < n; i++) { hash = (hash << OneEighth) + key.charAt(i); if ((test = hash & HighBits) != 0) { hash = ((hash ^ (test >> ThreeQuarters)) & (~HighBits)); } } return (hash & 0x7FFFFFFF); } public static int ELFhash(String key) { int h = 0; int n = key.length(); for (int i = 0; i < n; i++) { h = (h << 4) + key.charAt(i); long g = h & 0Xf0000000L; if (g != 0) { h ^= g >> 24; h &= ~g; } } return (h & 0x7FFFFFFF); } // SDBM Hash Function public static int SDBMHash(String key) { int hash = 0; int n = key.length(); for (int i = 0; i < n; i++) { hash = key.charAt(i) + (hash << 6) + (hash << 16) - hash; } return (hash & 0x7FFFFFFF); } // DJB Hash Function public static int DJBHash(String key) { int hash = 5381; int n = key.length(); for (int i = 0; i < n; i++) { hash += (hash << 5) + key.charAt(i); } return (hash & 0x7FFFFFFF); } // AP Hash Function public static int APHash(String key) { int hash = 0; int n = key.length(); for (int i = 0; i < n; i++) { if ((i & 1) == 0) { hash ^= ((hash << 7) ^ key.charAt(i) ^ (hash >> 3)); } else { hash ^= (~((hash << 11) ^ key.charAt(i) ^ (hash >> 5))); } } return (hash & 0x7FFFFFFF); }}看完上述内容,你们对Java中常用的hash函数有什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内容
函数
常用
更多
知识
篇文章
行业
资讯
资讯频道
频道
J.
P.
进一
支持
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
勇者大陆服务器ip
图像数据库如何搭建
恒晟互联网信息科技有限公司
软件开发工期管理
数据库 exp命令
网络安全知识进校园背景图
唐山网络技术培训
工信部网络技术整改通知
淮安网络技术教育
滁州物业管理软件开发哪家好
2017互联网金融科技
数据库sql有注释吗
数据库字段加密方案
山东省人口数据库项目
软件开发延期惩罚
rust连接不了服务器怎么办
mqtt 网络安全
国农科技互联网
软件开发培训大概要多少钱
上海泛微网络技术有限公司
什么叫节点服务器
重庆专业软件开发多少钱
落实网络安全法二十一条
海康存储服务器预留多少内存
网络安全考研就业
数据库建表输错怎么办
应用软件开发换岗面试
网络安全日题目答案
兼职软件开发如何收费
缠绕膜可以用于服务器吗