哈希競猜游戲是根據(jù)什么原理搭建?
哈希應用程序有許多不同的名稱,有時稱為摘要,有時稱為校驗和,有時稱為指紋。事實上,它的意思是相同的,也就是說,哈??梢杂脕肀硎緮?shù)據(jù)本身
因為如果數(shù)據(jù)在存儲或傳輸過程之中發(fā)生任何變化,其哈希將發(fā)生變化。由于這一獨特特性,哈希函數(shù)最常見的功能是執(zhí)行數(shù)據(jù)完整性檢查,即數(shù)據(jù)無損檢查
(I)文件驗證
常見的驗證算法包括奇偶校驗和CRC驗證。這兩種驗證可以在一定程度之上檢測和糾正數(shù)據(jù)傳輸中的通道錯誤,但它們無法防止惡意破壞數(shù)據(jù),也無法抵抗數(shù)據(jù)篡改

MD5算法的“數(shù)字指紋”特性使其成為目前使用最廣泛的文件完整性驗證算法,通常用于下列兩種情況:
1。文件傳輸驗證
將傳輸文件的MD5哈希值與源文件進行比較,以確保一致性,這可以從統(tǒng)計之上確保兩個文件完全相同。它通常用于檢查文件傳輸過程之中是否存在錯誤,以確保文件在傳輸過程之中未被惡意篡改。許多下載工具軟件還使用MD5的特性來確保用戶在斷點處多次繼續(xù)下載之后下載文件的正確性
另一個更高級的解決方案是所謂的代碼簽名。文檔接收者不僅可以驗證文檔的完整性,還可以根據(jù)他對證書頒發(fā)者和證書所有者的信任來決定是否接受文檔。瀏覽器在下載和運行插件和Java小程序時使用此模式。例如,我們從服務器下載軟件。如果軟件被黑客更改,那么我們下載的軟件不是原始軟件。如果是銀行客戶,則可能存在賬戶被盜的風險。通過哈希操作,您可以通過哈希操作獲得下載軟件的哈希值,然后將哈希值與軟件發(fā)布者發(fā)布的哈希值進行比較,以了解軟件是否被篡改
2。保存二進制文件系統(tǒng)的數(shù)字指紋
許多系統(tǒng)管理和安全軟件提供了文件系統(tǒng)完整性評估功能。系統(tǒng)初始安裝之后,為文件系統(tǒng)建立基本校驗和數(shù)據(jù)庫。由于哈希校驗和的長度非常小,因此可以方便地存儲在容量非常小的存儲介質(zhì)之上。將來,可以定期或根據(jù)需要再次計算文件系統(tǒng)的檢查值。一旦發(fā)現(xiàn)與原始保存的值不匹配,則表明文件已被非法修改,或被病毒感染,或被特洛伊木馬程序替換
(II)數(shù)字簽名
哈希算法是現(xiàn)代密碼系統(tǒng)的重要組成部分。由于非對稱算法的運算速度較慢,單向哈希函數(shù)在數(shù)字簽名協(xié)議之中起著重要作用。在該簽名協(xié)議之中,雙方必須提前協(xié)商雙方支持的哈希函數(shù)和簽名算法
簽名者首先計算數(shù)據(jù)文件的哈希值,然后使用非對稱算法對非常短的哈希值進行數(shù)字簽名。當另一方驗證簽名時,它首先計算數(shù)據(jù)文件的哈希值,然后使用非對稱算法驗證數(shù)字簽名。哈希值的數(shù)字簽名在統(tǒng)計上等同于文件本身的數(shù)字簽名。首先,可以將數(shù)據(jù)文件本身與其哈希值分開保存,也可以在不存在數(shù)據(jù)文件本身的情況之下進行簽名驗證。其次,在某些情況之下,簽名密鑰可能與解密密鑰相同,也就是說,如果對數(shù)據(jù)文件進行簽名,則其操作與非對稱解密操作相同,這是非常危險的。惡意破壞者可能會向您發(fā)送一個文件,試圖欺騙您將其解密為需要您簽名的文件。因此,當對任何數(shù)據(jù)文件進行數(shù)字簽名時,僅對其哈希值進行簽名是安全的
(III)身份驗證協(xié)議
有一種稱為“質(zhì)詢身份驗證模式”的身份驗證協(xié)議:需要身份驗證的一方向要身份驗證的一方發(fā)送隨機字符串(“質(zhì)詢”),認證方將隨機字符串與其自身的認證密碼一起散列,然后將其返回給認證方,認證方將將接收到的散列值與散列操作的結果進行比較,并在其自己的一端與另一方的認證密碼字(“認證”)。如果相同,則在統(tǒng)計之上可以認為另一方擁有密碼字,即通過身份驗證
(IV)網(wǎng)站注冊
當用戶注冊并提交用戶名和密碼時,用戶名直接保存到網(wǎng)站數(shù)據(jù)庫,但密碼不直接保存,但密碼轉換為哈希,然后將哈希值保存到網(wǎng)站數(shù)據(jù)庫之中。因此,即使是網(wǎng)站管理員也無法獲得用戶的密碼。如果公司的數(shù)據(jù)庫泄露,用戶的密碼仍然安全
當用戶登錄網(wǎng)站并輸入密碼提交給服務器時,服務器也會執(zhí)行相同的哈希操作。由于輸入數(shù)據(jù)沒有變化,哈希沒有變化,登錄成功
(V)區(qū)塊鏈和加密貨幣
比特幣系統(tǒng)之中主要使用兩個加密哈希函數(shù),分別是SHA-256和ripemd160
以SHA-256為例,這是用于構建區(qū)塊鏈的主要密碼哈希函數(shù)。無論是塊的頭信息還是事務數(shù)據(jù),該哈希函數(shù)都用于計算相關數(shù)據(jù)的哈希值,以確保數(shù)據(jù)的完整性。同時,在比特幣系統(tǒng)之中,基于查找給定前綴的sha256哈希值,設計了一種用于工作量證明的共識機制;Sha256還用于構造比特幣地址,即識別不同的用戶
在比特幣系統(tǒng)中,SHA-256算法的一個主要用途是完成PoW(工作量證明)計算。而區(qū)塊鏈就可以看作一類使用哈希指針的鏈表,這個鏈表鏈接一系列的區(qū)塊,每個區(qū)塊包含數(shù)據(jù)以及指向表中前一個區(qū)塊的指針。區(qū)塊鏈中,前一個區(qū)塊指針由哈希指針所替換,因此每個區(qū)塊不僅僅告訴前一個區(qū)塊的位置,也提供一個哈希值去驗證這個區(qū)塊所包含的數(shù)據(jù)是否發(fā)生改變。
利用區(qū)塊鏈構造一個防篡改的日志系統(tǒng),在這個系統(tǒng)中,基于區(qū)塊鏈的日志節(jié)點鏈表被用來存儲數(shù)據(jù),鏈表節(jié)點通過哈希指針鏈接,新節(jié)點追加在日志鏈表的尾部。同時,日志鏈表的頭哈希指針所指向的頭節(jié)點內(nèi)容不可改變。若日志鏈表中的某個節(jié)點的數(shù)據(jù)被
掃描二維碼推送至手機訪問。
版權聲明:本文由財神資訊-領先的體育資訊互動媒體轉載發(fā)布,如需刪除請聯(lián)系。