现在,有非常多的字符串hash算法都很优秀,本文主要面对ELFhash算法来表述,相对来说比较的清晰 2.ELFhash 首先我需要声明,字符串hash算法ELFhash的算法的形成的三列的均匀性我不会证明 根据其他的大牛的描述,ELFhash算法对于长字符串和短字符串都有优良的效率,以下的数据援引刘爱贵大神的实验数据: Hash应用中,字符串...
2.ELFhash 首先我需要声明,字符串hash算法ELFhash的算法的形成的三列的均匀性我不会证明 根据其他的大牛的描述,ELFhash算法对于长字符串和短字符串都有优良的效率,以下的数据援引刘爱贵大神的实验数据: Hash应用中,字符串是最为常见的关键字,应用非常普通,现在的程序设计语言中基本上都提供了字符串hash表的支持。字...
// ELF Hash Function unsigned int ELFHash(char *str) { unsigned int hash = 0; unsigned int x = 0; while (*str) { hash = (hash << 4) + (*str++);//hash左移4位,把当前字符ASCII存入hash低四位。 if ((x = hash & 0xF0000000L) != 0) { //如果最高的四位不为0,则说明字符...
值得感谢的是,在与同事Joey Costoya的一次头脑风暴会议中,我想到了一个可能的想法:在二进制文件中获取函数调用的目标地址,从中创建一个列表,并将其提供给telfhash。 为了实现这一点,我使用telfhash查找在每个支持的体系结构中调用函数的指令的参数。图8所示的代码节选就说明了这一点。 我们可以在图9中看到这个特性...
ELFHash算法解释: ELFhash函数关键是要取得字符串对应的hash值。(别人的分析:它对于长字符串和短字符串都很有效,字符串中每 个字符都有同样的作用,它巧妙地对字符的ASCII编码值进行计算,ELFhash函数对于能够比较均匀地把字符串分布 在散列表中。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。) ...
对于Linux物联网恶意软件,telfhash利用导入函数及其相关库名称来分析ELF可执行文件,生成一个相似性摘要算法,对类似的文件进行聚类。telfhash还解决了针对不同架构编译的恶意软件的多架构挑战,通过忽略编译器添加的特定于体系结构的函数,实现了针对不同体系结构编译的文件的聚类。此外,它还提供了一个与...
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; } ...
1//ELF Hash Function2unsignedintELFHash(char*str)3{4unsignedinthash =0;5unsignedintx =0;67while(*str)8{9hash = (hash <<4) + (*str++);//hash左移4位,把当前字符ASCII存入hash低四位。10if((x = hash &0xF0000000L) !=0)11{12//如果最高的四位不为0,则说明字符多余7个,现在正在存...
最近看UCC源码时,看到作者处理字符串哈希时,使用了ELFHash函数,于是查阅了一点资料,对这个算法作了个了解,记录哈 1 // ELF Hash Function 2 unsigned int ELFHash(char *str) 3 { 4 unsigned int hash = 0;...
数字范围较大,只能用字符串储存,注意去掉前导0,用map或其他的hash算法都可以,这里用的ELFhash算法 #include <bits/stdc++.h> using namespace std; typedef unsigned int ui; const int N = 7003, MOD = 7003; int Hash[N], num[N]; int res; ...