aks*_*aks 27 c hash hash-function hashtable
哈希表被认为是存储/检索数据的最快/最好的方式.
我对哈希表的理解,哈希如下(如果我错了请纠正我或者请添加如果还有更多):
我有个问题:
哈希函数是用于存储/检索数据DIFFERENT来自安全应用程序中使用的加密哈希函数,用于身份验证,如MD5,HMAC,SHA-1等......?
它们以什么方式不同?
如果你能提一些好的链接来更好地理解这些,那就太好了.
Jer*_*fin 11
加密哈希强调使任何人都难以故意创建冲突.对于哈希表,重点通常是快速产生合理的结果传播.因此,这两者通常是完全不同的(特别是,加密散列通常要慢得多).
对于典型的散列函数,结果仅受类型限制 - 例如,如果它返回size_t,则返回任何可能的size_t完全没问题.您可以将输出范围缩小到表格的大小(例如,使用除以表格大小的剩余部分,通常应该是素数).
作为一个例子,一个相当典型的普通哈希函数可能看起来像:
// warning: untested code.
size_t hash(char const *input) {
const int ret_size = 32;
size_t ret = 0x555555;
const int per_char = 7;
while (*input) {
ret ^= *input++;
ret = ((ret << per_char) | (ret >> (ret_size - per_char));
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
这里的基本思想是让输入字符串的每一位都影响结果,并且(尽可能快地)使结果的每一位都受到至少部分输入的影响.请注意,我并不是特别推荐这个作为一个很好的哈希函数 - 只是试图说明你想要完成的一些基础知识.
| 归档时间: |
|
| 查看次数: |
33061 次 |
| 最近记录: |