2015-07-02 36 views
1

我需要獲得一個對象的散列值,以便將其與存儲在服務器上的散列值進行比較。在客戶端獲得哈希的最簡單方法似乎是myObject.hashCode,但我不知道如何在服務器端重現該哈希,假設我具有相同的對象?或者爲了使這更容易,假設對象是一個字符串。object.hashCode使用什麼哈希方法?

飛鏢是否使用了廣爲人知的方法,如MD5,我可以很容易地在PHP中使用,或者我會更好地使用不同的方式?

+0

你的用例是什麼? hashCode不標識特定的實例。 HashCode只保證兩個相同的值返回相同的hashCode,但不是兩個不同的值具有不同的hashCode。 –

+0

@GünterZöchbauer我有一個密碼,我不想保存在數據庫中的明文,所以我不需要在我的實際使用情況下。但是我的問題出於好奇,因爲我肯定有些情況下你可能想要比較一個對象的服務器端實例和客戶端實例,而MITM attavks或類似服務器不能訪問它們。當然,還有其他方式來加密流量,但爲什麼不... – lucidbrot

+1

'.hashCode'不適合這種用例。兩個完全不同的對象可以具有相同的hashCode。您應該只使用不可變字段進行hashCode計算。如果hashCode對先前插入散列映射的對象進行更改,則不能再通過密鑰對其進行檢索。 –

回答

1

您可以使用自定義實現覆蓋類中的hashCode獲取器,以控制它們的創建方式。