2

我正在寻找一个唯一的随机哈希,它被复制的可能性很小。它应该只包含数字,并且我希望它是 4 个字符长。我的文件路径格式为

filepath = "c:\\users\\john\\filename.csv"

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

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

4

1 回答 1

5

从文件的文件名生成唯一的哈希是相当简单的。

然而...

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

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


根据评论进行编辑:

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

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

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

于 2012-08-13T16:11:14.413 回答