问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

常见的哈希算法有哪些?

发布网友 发布时间:2022-04-21 05:26

我来回答

4个回答

热心网友 时间:2022-06-18 05:28

1、RSHash
unsigned int RSHash(const std::string& str)
{
unsigned int b = 378551;
unsigned int a = 63689;
unsigned int hash = 0;

for(std::size_t i = 0; i < str.length(); i++)
{
hash = hash * a + str[i];
a = a * b;
}

return hash;
}

2、JSHash
unsigned int JSHash(const std::string& str)
{
unsigned int hash = 1315423911;
for(std::size_t i = 0; i < str.length(); i++)
{
hash ^= ((hash << 5) + str[i] + (hash >> 2));
}
return hash;
}

3、PJWHash
unsigned int PJWHash(const std::string& str)
{
unsigned int BitsInUnsignedInt = (unsigned int)(sizeof(unsigned int) * 8);
unsigned int ThreeQuarters = (unsigned int)((BitsInUnsignedInt * 3) / 4);
unsigned int OneEighth = (unsigned int)(BitsInUnsignedInt / 8);
unsigned int HighBits = (unsigned int)(0xFFFFFFFF) << (BitsInUnsignedInt - OneEighth);
unsigned int hash = 0;
unsigned int test = 0;

for(std::size_t i = 0; i < str.length(); i++)
{
hash = (hash << OneEighth) + str[i];

if((test = hash & HighBits) != 0)
{
hash = (( hash ^ (test >> ThreeQuarters)) & (~HighBits));
}
}
return hash;
}

4、ELFHash
unsigned int ELFHash(const std::string& str)
{
unsigned int hash = 0;
unsigned int x = 0;

for(std::size_t i = 0; i < str.length(); i++)
{
hash = (hash << 4) + str[i];
if((x = hash & 0xF0000000L) != 0)
{
hash ^= (x >> 24);
}
hash &= ~x;
}

return hash;
}

5、BKDRHash
unsigned int BKDRHash(const std::string& str)
{
unsigned int seed = 131; // 31 131 1313 13131 131313 etc..
unsigned int hash = 0;

for(std::size_t i = 0; i < str.length(); i++)
{
hash = (hash * seed) + str[i];
}
return hash;
}

哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。

热心网友 时间:2022-06-18 05:28

1.linear hash 线性
2.quadratic hash 每次以1,4,9,16这样的幅度向下找
3.double hash 用两个函数一起决定HASH的index

热心网友 时间:2022-06-18 05:29

最常见的线性的呗,取余数映射

热心网友 时间:2022-06-18 05:30

md5 sha1 murmurHash quickHash。。。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
表格列求和公式怎么设置 求和函数公式怎么输入 北京注册成立一个公司需要多少钱 北京公司都是什么 手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 高德地图躲避拥堵怎么开启 高德地图开启躲避拥堵方法 苹果电脑怎么忽略无线重新输入密码 Mac mini如何屏蔽掉蓝牙与wifi Wifi知道密码但连不上 那个mac怎么弄 macbook air怎么删除忽略已加入的无线网络 MAC中如何删除WiFi列表中的一个Wifi 如何删除苹果笔记本mac os x系统记住的wifi账户 mac air如何删除没用的wifi连接 MAC电脑怎么忽略已连接过的wifi Mac系统现有无线网络设置怎么样删除图文教程 Mac OS(苹果)电脑怎么删除wifi热点记录 关于BEC考试 怎么删除苹果笔记本上已连接的Wi-Fi BEC考试科普:什么是BEC机考 想考商务英语证书(BEC) 浠的拼音 商务英语方面的考试都有哪些? BEC具体是什么,怎么去考 BEC中级考试流程,具体几点考,先考什么后考什么 BEC具体是什么考试?怎么报名? 区块链中的哈希算法是什么? 什么是哈希hash 算法 什么是哈希算法?具体怎么用啊???有什么用啊? 区块链中哈希算法的特点是什么? 什么叫HASH算法?要求例题(PASCAL) 高德地图预测道路拥堵的原理是什么? 3.9立方米水泥等于多少吨 一方水泥等于多少吨 3方水泥等于多少吨 一立方水泥等于多少吨,一立方水泥等于多少吨知识 一吨水泥是多少立方米? 一立方干散装水泥等于多少吨 涓怎么读音 7个立方水泥等于多少吨? 一立方混凝土等于多少吨? 浦发银行信用卡分期手续费 梅艳芳是因为什么原因去世的? 浦发信用卡50000利息24期利息多少 浦发信用卡分期3万元怎么手续费一个月扣我900多呢 浦发信用卡账单日扣了分期手续费,额度变小了