2012-08-03 38 views
0

我正在使用QR碼條形碼將UUID存儲在我的系統中,我需要檢查生成的條形碼是我的而不是其他人的。我還需要保持編碼數據的簡短,以便QR碼保持在較低的版本範圍內,並且仍然易於掃描。SHA-1摘要縮減

我的方法是獲取UUID原始數值(一個128位值)和一個16位校驗和,然後Base64編碼該數據,然後轉換爲QR碼。迄今爲止非常好,這完美地運作。

要生成校驗和,我使用UUID的字符串版本,並將其與長密鑰字符串組合,並將奇數字節異或並生成SHA-1哈希。但是這個散列太長了,所以我把所有的舊字節都放在一起來產生一半的校驗和,同樣用偶數字節來產生另一半。

讓我擔心的是我已經通過XORing不必要地損害了SHA-1系統。從結果中的某個地方取兩個未操作的字節會更好嗎?我同意16位校驗和不會像160位校驗和那樣安全,但這是我必須爲條形碼的可用性付出的代價。我真的不想找到的是,現在我已經提供了一個校驗和,它很容易破解,因爲UUID是透明的。

如果有更好的方法來生成校驗和,這也是對問題的適當答案。像往常一樣,非常感謝您的時間,或者只是閱讀本文,如果您發佈答案,加倍感謝。

回答

0

沒有理由做任何XORing。簡單地取前兩個字節將是安全的。

要使代碼版本儘可能小,您可能需要將144位值轉換爲十進制字符串並對其進行編碼。 QR碼具有不同的字符集並有效地編碼數字。 QR碼只能在QR碼中編碼爲8位值,因此您可以在其中添加30%。

+0

謝謝smparkes,特別是關於轉換爲十進制字符串的提示。 – Dobbo 2012-08-04 10:18:23