2017-08-29 59 views
-1

我想開發一些可以散列文件/目錄名的東西,以便減小路徑的大小。找到一個合適的算法來散列文件名/目錄名

也希望碰撞的數量最小化。讓我們舉一個例子,我想將一個85個字符長的字符串散列爲一個8個字符長的散列。

例如。 「.../thisIsSomeVerySuperUltraBigHugeVerySuperUltraBigHugeDirectoryName/...」 => .../ebaca39c/...

但隨着使用散列函數的問題是,當它輸出一個8字節長的字符串,該字符串可能包含如:/?*「<> |哪些窗口不允許用作目錄名稱

有沒有什麼辦法可以解決這個問題?也許只有生成某些字符的哈希函數?方式?

+1

你在做什麼環境,你不能只將文件路徑存儲爲字符串?你存儲了多少個文件路徑? 文件路徑佔用的大小即使是現實的擔憂? – HumbleWebDev

回答

0

您可以採用任何散列函數(例如SHA1)的字節的base64表示並刪除/,+=或用其他字符替換它們。並截斷到你想要的長度。請注意,如果您將自己限制爲簡短名稱,則散列不同名稱可能會給您相同的散列值。

但是,您也可以選擇一個隨機字符串而不是散列。看看Path.GetRandomFileName()

相關問題