2010-11-07 69 views
2

我想在服務器端應用程序中壓縮或壓縮來自MD5或SHA1的結果散列值,以便客戶端可以對其進行解壓縮或刪除它,這可能嗎?它是我的應用程序的可用性問題。如何減少散列值的長度?

+0

您如何通過該值? – Kobi 2010-11-07 05:39:22

+0

你可以給出一個商業理由來做到這一點? – jcolebrand 2010-11-07 05:44:58

+0

例如:你要發送你的一次性密碼,這是一個散列值的結果,這對用戶來說很難寫32個字節...... – 2010-11-07 07:54:13

回答

3

不,無法壓縮散列值。通過設計它們的位是高度隨機的並且具有最大的熵,所以沒有冗餘來壓縮。

如果你想哈希值更易於讀取,用戶可以使用不同的技巧,如:

  • 顯示更少的數字。而不是32位數字只顯示16.

  • 使用不同的基地。例如,如果使用基座62使用所有的大寫和小寫字母加數字0-9的數字,那麼你可以示出使用22個字母+數字表示與32位十六進制數字的128位散列:

    日誌(2 )≈ 21.5

  • 添加空格或標點符號。您通常會看到用AX7T4-BZ41O-JK3FF-QOZ96等短劃線打印的CD密鑰。用戶閱讀這個數字比20位數字全部卡在一起更容易。

1

哈希值非常短;試圖壓縮這些(非常隨機和高度變化的)值是困難和低效的。如果您想節省空間,截斷值可能會有所幫助,但請記住,如果您這樣做,則會增加碰撞空間(並減少關鍵空間)。