一、雜湊值
說到雜湊值,都知道雜湊值是通過雜湊函式計算得出的,有時看了一堆介紹雜湊值、雜湊表、雜湊函式的資料,卻對雜湊值還是一知半解。那麼要理解雜湊值,就要先明白雜湊值的作用是什麼,為什麼需要雜湊值。
雜湊值作用有二,一資料壓縮,二資料完整性校驗。(個人理解)
資料壓縮,是為了傳輸方便以及保證資料安全性。像原資料50m,計算出的雜湊值只有1k,傳1k當然會方便很多。資料安全性是指通過雜湊值無法反推出原資料。雜湊函式是單向的。這樣就保證了其他人雖然獲取到雜湊值但無法知道原資料是什麼,保證了原資料的安全性。
壓縮後的資料並不能「解壓縮」,值x通過雜湊函式f(x)計算得到雜湊值y後,y不能反推得到x。因為為了壓縮資料大小,在x計算過程中必定有資料損耗,如某一步驟計算出來的資料會向右偏移4位,低的4位就被捨棄了,如此一來就無法通過計算出的結果反推出原資料了。
完整性校驗,就是校驗資料完整性,有沒有被別人篡改。舉例來講,就是a要給b發乙個重要訊息「今晚8點來我家找我」,為了防止中間被別人篡改時間或地點,a會發給b這個訊息本身及這個訊息的雜湊值,b拿到資訊後,將資訊計算雜湊,與a發來的雜湊值進行比較,若相同則說明訊息未被篡改,若雜湊值不同,說明訊息被篡改了。
了解了雜湊值兩個作用後,你就會明白雜湊函式的重要性。並不是隨便寫乙個函式就可以把它叫做雜湊函式。它需要有資料壓縮的功能,因此它會有乙個取值範圍。完整性校驗就要求雜湊函式需要讓x的雜湊值盡量均勻、隨機的雜湊在這個取值範圍內。若不能均勻、隨機的雜湊在取值範圍內,會被找出規律,容易找到兩個雜湊值相同的資料,從而篡改原資料。因此雜湊值又被稱為雜湊值。雜湊值的安全性就在於雜湊函式的複雜度,越複雜越不容易被人破解。
最後,一句話總結一下,雜湊值是通過雜湊函式對映到雜湊表內。
雜湊值:不能通過雜湊值得到原資料。
雜湊函式:需要盡量均勻隨機的將資料對映到雜湊表。
雜湊表,其實就是乙個取值範圍。
二、mac(訊息身份驗證** )
mac:message authentication code
mac實際上就是帶金鑰的hash函式。這個秘鑰使得mac值比雜湊值多出乙個功能:身份驗證。
雜湊值可以保證資料的完整性,但你無法確定這個雜湊值是不是你預期的人發給你的。你只知道你收到一條訊息+它的雜湊值,驗證通過,但無法保證這個訊息和雜湊值有沒有整體被替換。
mac值就可以做身份驗證。a和b之間有一共享秘鑰,這個秘鑰是其他人不知道的,那麼這個秘鑰參與雜湊函式計算過程,俗稱加鹽,就可以保證我收到這個訊息確定是由的a發來的,因為參與雜湊計算的秘鑰只有a和b知道,其它人無法偽造這條訊息的雜湊值。
這就是mac,訊息身份認證碼。有身份驗證及完整性驗證兩功能。
雜湊值是什麼
雜湊值是什麼 雜湊值就是檔案的身份證,不過比身份證還嚴格。他是根據檔案大小,時間,型別,創作著,機器等計算出來的,很容易就會發生變化,誰也不能預料下乙個號碼是多少,也沒有更改他的軟體。雜湊演算法將任意長度的二進位制值對映為固定長度的較小二進位制值,這個小的二進位制值稱為雜湊值。雜湊值是一段資料唯一且...
使用雜湊傳值
public tchospinfodata getonhospbasic decimal id orgid,string is frcode,string is fjcmyear,string is fcountymark,string outyn,string allyn,string is fi...
物件的雜湊值
3 遍歷該位置上的所有舊元素,依次比較每個舊元素的雜湊值和新元素的雜湊值是否相同。4 比較新元素和舊元素的位址是否相同 5 說明沒有重複,則將新元素存放到該位置上並讓新元素記住之前該位置的元素。問題 為什麼儲存字串的時候,字串內容相同的只儲存了乙個呢?按照方法的步驟來說 public static ...