从文件名生成唯一哈希

时间:2012-08-13 16:08:12

标签: c# .net hash

我希望生成一个独特的随机哈希,它具有重复的微小机会。它应该只包含数字,我希望它长4个字符。我有

形式的文件路径
filepath = "c:\\users\\john\\filename.csv"

现在,我只想选择该字符串的“filename”部分,并从该文件名创建一个哈希值,虽然我希望每次都不同,所以如果两个用户上传一个类似命名的文件,它可能会生成不同的哈希码。这样做的最佳方式是什么?

我将使用此哈希附加“001”,“002”等来创建学生ID。

1 个答案:

答案 0 :(得分:4)

生成unique hash from a file's filename非常简单。

...然而

  

它应该只包含数字,我希望它长4个字符。

只有4个数字字符,您将确保与1000个不同的文件发生冲突,并且可能会更快地被击中。这使得不可能有“重复的微小机会”。


编辑以回应评论:

你可以做一些简单的哈希类型,虽然这会产生很多冲突:

string ComputeFourDigitStringHash(string filepath)
{
     string filename = System.IO.Path.GetFileNameWithoutExtension(filepath);
     int hash = filename.GetHashCode() % 10000;
     return hash.ToString("0000");
}

这将从字符串的文件名部分为您提供4位“哈希”。请注意,它会有很多碰撞,但它会为您提供一些可以使用的东西。