簡體   English   中英

生成更大的HashCode JAVA

[英]Generate Bigger HashCode JAVA

由於已知事實,Java會生成大約40億個唯一的Hashcode。

我正在使用某些字符串的哈希碼(例如Fname + Lname + DOB + DATE),它成為數據庫的主鍵

在@PrePersist中,我使用Hashcode進行了設置,這有助於我為新用戶生成Hashcode。 (必須是唯一的)。

現在我已經沒有代碼了。 對我來說,可能的替代方法是使用SHA-2,MD5等。

如何增加哈希碼的大小,又如何避免發生較大的沖突。

如果您的目標是為數據庫創建唯一標識符,則建議使用UUID

UUID版本3 (使用名稱空間)將適合您的情況。

一些數據庫具有對UUID的本地支持,例如PostgreSQL

我認為您對使用int Object.hashCode()感到困惑,您可以重寫它並返回一個int並使用安全的哈希函數。 那是兩件事。 Object.hashCode不能返回唯一的整數(返回1是有效的實現)。 因此,使用String.hashCode()進行對象標識並不是一個好主意,因為它可能會發生沖突。 它旨在與HashTables一起使用; 這意味着它針對性能進行了優化,而不是為了避免沖突。

如果您想要某種內容哈希,則確實可以使用sha1,sha2,sha3或md5。 如果不是,請使用SecureRandom或UUID隨機生成一些內容。 所有這些都極有可能使您發生碰撞(當然不是完全為0)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM