字符串单词的唯一哈希值
Unique hash of string words
我正在为任意字符串单词编写一个哈希函数(最大可能长度<26(。我最初的方法是将单词中每个字母的 ASCII 值汇总 - 如 C++ 中实现的那样:
int getKey(string value){
int key = 0;
int temp = 0;
int length = value.length();
for (int i = 0; i < length; i ++){
temp = (int)value[i];
key = key + temp;
}
return key;
}
但是,我很快意识到这种方法会导致太多重复(例如,由同一组字母组成的单词(。所以我想知道是否有办法获得一个可由给定长度下任何单词唯一的 C++ int 表示的哈希值?
谢谢!
如果我们认为一个典型的文本字符串中大约有 5 位信息(26 个大写,26 个小写,一些标点符号大约是 64 个不同的字符(,那么对于 26 个字符的字符串,您将需要大约 130 位和一个完美的哈希函数以避免冲突。如果可以接受罕见的冲突,请使用std::hash<>
- 它返回一个通常为 64 位的size_t
- 或者如果您想要统计上唯一的哈希值,请使用类似 SHA256
的内容。
也许可以在Cryptography StackExchange上找到更多的技术细节。
相关文章:
- boost::包含提升单元的元组的哈希值
- 如何使用 STL 哈希容器中的哈希值检索元素?
- 哈希函数中同一键的不同值和良好的哈希值排序
- 字符串单词的唯一哈希值
- 是否可以将哈希值作为编译时常数
- CMake检查下载文件的哈希值(MD5/SHA256)
- 正在将哈希值存储到int
- 如何计算没有标签信息的 mp3 文件的哈希值
- 如何定义函数序列的哈希值(C++)
- C++-对象图的哈希值类似于boost::序列化
- 如何获取哈希值,C++ hash_map
- 在Qt中创建目录的哈希值
- 杂音哈希 - 哈希值不一致
- 逐行散列文件时错误的 md5 哈希值
- 为什么不同程序执行之间的哈希值不一致
- 如何有效地存储和排序生日攻击的哈希值
- unordered_map存储桶中的所有元素是否具有相同的哈希值
- 使用openssl/MD5时出现意外的MD5哈希值
- 存储具有字符串类型键的哈希值的最佳结构
- 同一字符串的两个不同哈希值