小编Dom*_*ber的帖子

在UTF16中寻找文件路径的64位哈希值

我有一个Unicode/UTF-16编码路径.路径分隔符是U + 005C'\'.路径是以空值终止的根相对Windows文件系统路径,例如"\ windows\system32\drivers\myDriver32.sys"

我想将此路径哈希为64位无符号整数.它并不需要"加密的声音".散列应该不区分大小写,但能够处理非ascii字母.显然,哈希也应该散布好.

我有一些想法:

A)使用Windows文件标识符作为"哈希".在我的情况下,我确实希望在文件移动时更改哈希值,因此这不是一个选项.

B)只需使用常规的sting哈希:hash + = prime*hash + codepoint作为整个字符串.

我确实感觉可以利用路径由"segements"(文件夹名称和最终文件名)组成的事实.

总结需求:

1)64位散列
2)文件系统路径的良好分布/少碰撞.
3)高效
4)不需要安全
5)不区分大小写

hash path utf-16 collision hash-collision

7
推荐指数
1
解决办法
2746
查看次数

标签 统计

collision ×1

hash ×1

hash-collision ×1

path ×1

utf-16 ×1