我希望生成一个独特的随机哈希,它具有重复的微小机会。它应该只包含数字,我希望它长4个字符。我有
形式的文件路径filepath = "c:\\users\\john\\filename.csv"
现在,我只想选择该字符串的“filename”部分,并从该文件名创建一个哈希值,虽然我希望每次都不同,所以如果两个用户上传一个类似命名的文件,它可能会生成不同的哈希码。这样做的最佳方式是什么?
我将使用此哈希附加“001”,“002”等来创建学生ID。
答案 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位“哈希”。请注意,它会有很多碰撞,但它会为您提供一些可以使用的东西。