hash hashC语言中的hash函数

hash hash  时间:2022-03-02  阅读:()

C语言中的hash函数

Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 HASH主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值. 也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系。Hash算法在信息安全方面的应用主要体现在以下的3个方面:文件校验、数字签名、鉴权协议 程程序实现 // 说明:Hash函数(即散列函数)在程序设计中的应用目标 ------ 把一个对象通过某种转换机制对应到一个 //size_t类型(即unsigned long)的整型值。 // 而应用Hash函数的领域主要是 hash表(应用非常广)、密码等领域。 // 实现说明: // ⑴、这里使用了函数对象以及泛型技术,使得对所有类型的对象(关键字)都适用。 // ⑵、常用类型有对应的偏特化,比如string、char*、各种整形等。 // ⑶、版本可扩展,如果你对某种类型有特殊的需要,可以在后面实现专门化。 // ⑷、以下实现一般放在头文件中,任何包含它的都可使用hash函数对象。 //------------------------------------实现------------------------------------------------ #include <string> using std::string; inlinesize_thash_str(const char* s) { unsigned long res = 0; for (; *s; ++s) res = 5 * res + *s; returnsize_t(res); } template <class Key> struct hash { erator () (const Key& k) const; }; // 一般的对象,比如:vector< queue<string> >;的对象,需要强制转化 template < class Key > size_thash<Key>::operator () (const Key& k) const { size_tres = 0; size_tlen = sizeof(Key); const char* p = reinterpret_cast<const char*>(&k); while (len--) { res = (res<<1)^*p++; } return res; } // 偏特化 template<> size_thash< string >::operator () (const string& str) const { return hash_str(str.c_str()); } typedef char* PChar; template<> size_thash<PChar>::operator () (const PChar& s) const { return hash_str(s); } typedef const char* PCChar; template<> size_thash<PCChar>::operator () (const PCChar& s) const { return hash_str(s); } template<> size_t hash<char>::operator () (const char& x) const { return x; } template<> size_t hash<unsigned char>::operator () (const unsigned char& x) const { return x; } template<> size_t hash<signed char>::operator () (const signed char& x) const { return x; } template<> size_t hash<short>::operator () (const short& x) const { return x; } template<> size_t hash<unsigned short>::operator () (const unsigned short& x) const { return x; } template<> size_t hash<int>::operator () (const int& x) const { return x; } template<> size_t hash<unsigned int>::operator () (const unsigned int& x) const { return x; } template<> size_t hash<long>::operator () (const long& x) const { return x; } template<> size_t hash<unsigned long>::operator () (const unsigned long& x) const { return x; } // 使用说明: // // ⑴、使用时首先由于是泛型,所以要加上关键字类型。 // // ⑵、其次要有一个函数对象,可以临时、局部、全局的,只要在作用域就可以。 // // ⑶、应用函数对象作用于对应类型的对象。 //----------------------- hash函数使用举例 ------------------------- #include <iostream> #include <vector> #include <string> using namespace std; int main() { vector<string> vstr⑵; vstr[0] = "sjw"; vstr[1] = "suninf"; hash<string> strhash; // 局部函数对象 cout << " Hash value: " << strhash(vstr[0]) << endl; cout << " Hash value: " << strhash(vstr[1]) << endl; cout << " Hash value: " << hash< vector<string> >() (vstr) << endl; cout << " Hash value: " << hash<int>() (100) << endl; // hash<int>() 临时函数对象 return 0; }

justhost:“第4次VPS测评”,8.3元/月,200M带宽,不限流量,KVM虚拟,4个俄罗斯机房应有适合你的

justhost.ru官方来消息说已经对网络进行了比较全面的优化,针对中国电信、联通、移动来说,4个机房总有一个适合中国用户,让站长进行一下测试,这不就有了这篇有关justhost的VPS的第四次测评。本帖主要关注的是网络,对于其他的参数一概不管! 官方网站:https://justhost.ru 最低配VPS:8.3元/月,KVM,512M内存,5G硬盘,200M带宽,不限流量 购买链接:...

弘速云香港VPSVPS线路有CN2+BGP、CN2 GIA,KVM虚拟化架构,裸金属月付564元

弘速云怎么样?弘速云是创建于2021年的品牌,运营该品牌的公司HOSU LIMITED(中文名称弘速科技有限公司)公司成立于2021年国内公司注册于2019年。HOSU LIMITED主要从事出售香港vps、美国VPS、香港独立服务器、香港站群服务器等,目前在售VPS线路有CN2+BGP、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。可联系商家代安装iso系统。点击进入:弘速云官方网站地址...

Hostodo:4款便宜美国vps七折优惠低至$13/年;NVMe阵列1Gbps带宽,免费DirectAdmin授权

hostodo怎么样?快到了7月4日美国独立日,hostodo现在推出了VPS大促销活动,提供4款Hostodo美国独立日活动便宜VPS,相当于7折,低至$13/年,续费同价。Hostodo美国独立日活动结束时间不定,活动机售完即止。Hostodo商家支持加密数字货币、信用卡、PayPal、支付宝、银联等付款。Hostodo美国独立日活动VPS基于KVM虚拟,NVMe阵列,1Gbps带宽,自带一个...

hash hash为你推荐
api支付接口聚合支付和API支付接口那各一个更容易申请?云知声云知声这家公司怎么样防护个人防护措施有哪些?什么是cookie有时遇到网页提示禁止第三方cookie是什么意思?什么是cookie覆盖自动cookie处理是什么意思小项目适合在家做的小项目有什么?什么是光纤什么是光纤网络海淀区公司注册注册海淀公司需要验资报告吗超市商品价格商品进入大型超市需要哪些费用?安全网络攻防大赛安全知识竞赛
域名购买 域名解析服务器 新通用顶级域名 息壤主机 抢票工具 免费ddos防火墙 网盘申请 本网站在美国维护 web服务器安全 双12 台湾google 独享主机 架设邮件服务器 摩尔庄园注册 空间服务器 电信宽带测速软件 杭州电信 葫芦机 linux服务器系统 asp简介 更多