2011-03-16 14 views
0

我正在向2D條形碼寫入約120個字符的字符串。與其他文字一起,該字符串包含唯一的票號。我想確保有人不會通過閱讀二維條碼來生成假票,並生成自己的條形碼票。2D條形碼數據的散列函數

我想散列該字符串,並將散列值附加到嵌入條形碼中的內容。通過這種方式,我可以將兩者進行比較,看看數據是否被篡改。我已經看到幾個散列函數返回64個字節,但是嵌入到二維條碼中的字符越多,條碼圖像變得越大。我想要一個算法返回一個相當小的值。如果我可以提供我自己的密鑰功能也是很好的。碰撞並不是什麼大事。這不是任何一種國家安全應用。

有什麼建議嗎?

+0

「非常小」有多小? – 2011-03-16 22:53:44

回答

0

使用任何標準的散列函數。取120個字符的字符串;追加你自己的祕密價值;將其饋送到SHA-1或MD5或任何你方便或感覺實施的散列函數;那麼只需就可以獲得所需的第一個位數並將其用作您的值。 (如果您需要ASCII字符,那麼我建議您採用6位組並使用base-64編碼。)

如果您使用的散列是任何好的(例如,MD5和SHA-1是; MD5不應該用於嚴格的密碼算法,但它聽起來像它足夠滿足您的需求),那麼從它的任何一組位將是「足夠好」,因爲沒有其他函數產生這麼多位好多了。

(警告:。對於嚴重的密碼使用,你應該更加仔細看,如http://en.wikipedia.org/wiki/HMAC瞭解更多信息從你的描述,我不相信你不需要擔心這樣的事情)

+0

這對我的需求很好。謝謝Gareth。 – Mike 2011-03-17 02:57:31