區塊鏈中哈希函數
① 鍖哄潡閾炬妧鏈4錛氬瘑鐮佸︿箣鍝堝笇
瀵嗙爜瀛︾殑鍔犲瘑瀹堟姢鑰咃細鍝堝笇鍑芥暟鍦ㄥ尯鍧楅摼涓鐨勫姏閲
鍦ㄦ暟瀛楃粡嫻庣殑涓栫晫閲岋紝鍖哄潡閾炬妧鏈鍑鍊熷叾鍘諱腑蹇冨寲鍜屽畨鍏ㄦэ紝姝i犺嗕紶緇熶氦鏄撴柟寮忋傛瘮鐗瑰竵鐨勮癁鐢燂紝灝辨槸瀵嗙爜瀛︽妧鏈鐗瑰埆鏄鍝堝笇鍑芥暟鐨勬澃浣溿傚搱甯屽嚱鏁幫紝榪欎釜鐪嬩技紲炵樼殑綆楁硶錛屽叾瀹炴壆婕旂潃鍏抽敭瑙掕壊錛岀『淇濅簡浜ゆ槗鐨勯忔槑鎬у拰闃叉鴻瘓鑳藉姏銆
鍝堝笇鍑芥暟鐨勯瓟娉曪細紜瀹氭у拰鎶楀啿紿
鍝堝笇鍑芥暟鐨勬牳蹇冪壒鎬у湪浜庡叾鎺ユ敹浠諱綍杈撳叆騫剁敓鎴愬滻瀹氶暱搴﹁緭鍑猴紝濡係HA-256綆楁硶錛屽畠閫氳繃寮傛垨榪愮畻蹇閫熻$畻錛岀敓鎴愮殑64浣16榪涘埗鏁e垪鍊煎叿鏈夋棤娉曡繕鍘熺殑鍗曞悜鎬с傜悊鎯崇殑鍝堝笇鍑芥暟瑕佹眰鍏峰囦簲涓鐗規э細紜瀹氭с佸揩閫熻$畻銆佹姉鍐茬獊銆侀洩宕╂晥搴斿拰闅愯棌銆傛姉鍐茬獊浣垮緱SHA-256閬垮厤浜嗗嚑涔庝笉鍙鑳界殑2^256嬈¤緭鍏ュ啿紿侊紝濡傚湪媯嫻媥code鍚庨棬鏃訛紝閫氳繃MD5鐨勬暎鍒楃『璁よ蔣浠舵潵婧愮殑鐪熷疄鎬с
闅愯棌鐨勫姏閲忎笌puzzle friendliness
鍝堝笇鍑芥暟鐨勯殣鈃忕壒鎬э紝濡侻D5錛岄氳繃娣誨姞闅忔満鎬т繚鎶や俊鎮錛屾瘮濡備笘鐣屾澂棰勬祴緇撴灉錛岃╅勬祴鍊煎彉寰楅毦浠ョ洿鎺ユ帹鏂銆傝宲uzzle friendliness錛屽嵆闅句互蹇閫熸壘鍒版弧瓚崇壒瀹氭潯浠剁殑杈撳叆錛屾f槸姣旂壒甯佸伐浣滈噺璇佹槑錛圥roof of Work錛夎儗鍚庣殑鍏抽敭鏈哄埗錛屽畠紜淇濅簡鍖哄潡閾劇殑瀹夊叏鎬у拰鍘諱腑蹇冨寲銆
SHA-256鐨勮$畻涔嬫棶
SHA-256綆楁硶鐨勮$畻榪囩▼鏋佷負澶嶆潅錛岄氳繃64嬈¤凱浠o紝鍒濆嬪悜閲忓拰杞嬈℃洿鏂拌勫垯錛屼互鍙64涓璐ㄦ暟絝嬫柟鏍圭殑甯擱噺鍙備笌錛岀『淇濅簡姣忎竴姝ョ殑榪愮畻閮芥槸鐙涓鏃犱簩鐨勩傚湪娑堟伅澶勭悊闃舵碉紝鍗充嬌鏄鐭杈撳叆錛屼篃浼氳鎵╁睍騫跺~鍏呰嚦512浣嶇殑鍊嶆暟錛屼互閫傚簲Merkle-Damgard緇撴瀯錛屼負鍖哄潡閾劇殑鍔犲瘑鍜岄獙璇佹彁渚涘熀紜銆
鍖哄潡閾句腑鐨勫搱甯屽簲鐢
鍦ㄥ尯鍧楅摼涓栫晫錛屽搱甯屽嚱鏁扮殑浣滅敤鑷沖叧閲嶈併傚伐浣滈噺璇佹槑鏈哄埗涓錛岀熆宸ラ渶瑙e喅澶嶆潅鐨勫搱甯岃$畻闅鵑橈紝鑰屽尯鍧楀唴瀹圭殑鏍¢獙鍒欎緷璧栦簬鍝堝笇鍊肩殑涓鑷存с傝繖浜涘姛鑳界『淇濅簡浜ゆ槗鐨勪笉鍙綃℃敼鎬э紝鏄鍖哄潡閾懼幓涓蹇冨寲淇′換鍩虹煶鐨勪竴閮ㄥ垎銆傛繁鍏ョ悊瑙e搱甯岋紝灝辨槸鎺屾彙浜嗗尯鍧楅摼鎶鏈鐨勪竴鎶婇掗鍖欙紝濡傘1銆態lock hashing algorithm, 銆2銆戞瘮鐗瑰竵涔︾睄PDF, 銆3銆慡HA-2, 銆4銆慡HA256綆楁硶璇﹁В絳夎祫婧愶紝涓烘帰緔㈣繖涓鍔犲瘑瀹囧畽鎻愪緵浜嗗疂璐電殑鐭ヨ瘑銆
鍖哄潡閾炬妧鏈鐨勫瘑鐮佸︿箣鏃咃紝鍝堝笇鍑芥暟鏃犵枒鏄閭d釜涓嶅彲鎴栫己鐨勫畧鎶よ咃紝瀹冪殑紲炵樹笌鍔涢噺錛屾i┍鍔ㄧ潃鏁板瓧緇忔祹鐨勯潻鏂般
② 區塊鏈技術中的哈希演算法是什麼
1.1. 簡介
計算機行業從業者對哈希這個詞應該非常熟悉,哈希能夠實現數據從一個維度向另一個維度的映射,通常使用哈希函數實現這種映射。通常業界使用y = hash(x)的方式進行表示,該哈希函數實現對x進行運算計算出一個哈希值y。
區塊鏈中哈希函數特性:
函數參數為string類型;
固定大小輸出;
計算高效;
collision-free 即沖突概率小:x != y => hash(x) != hash(y)
隱藏原始信息:例如區塊鏈中各個節點之間對交易的驗證只需要驗證交易的信息熵,而不需要對原始信息進行比對,節點間不需要傳輸交易的原始數據只傳輸交易的哈希即可,常見演算法有SHA系列和MD5等演算法
1.2. 哈希的用法
哈希在區塊鏈中用處廣泛,其一我們稱之為哈希指針(Hash Pointer)
哈希指針是指該變數的值是通過實際數據計算出來的且指向實際的數據所在位置,即其既可以表示實際數據內容又可以表示實際數據的存儲位置。下圖為Hash Pointer的示意圖
③ 區塊鏈中的哈希值是什麼
區塊鏈中的哈希值是將任意長度的輸入字元串轉換為密碼並進行固定輸出的過程。哈希值不是一個「密碼」,不能通過解密哈希來檢索原始數據,它是一個單向的加密函數。
在區塊鏈中,每個塊都有前一個塊的哈希值。當更改當前塊中的任何數據時,塊的哈希值將被更改,這將影響前一個塊,因為它有前一個塊的地址。例如如果只有兩個塊,一個是當前塊,一個是父塊。當前塊將擁有父塊的地址,如果需要更改當前塊中的數據,還需要更改父塊。
一個加密哈希函數需要具備以下幾個關鍵的特性才能被認為是有用的
1、每個哈希值都是不同的。
2、 對於相同的消息,總是生成相同的哈希值。
3、不可能根據哈希值來決定輸入。
4、即使對輸入的整個哈希值做一個小的更改也會被更改。