什麼是哈希算法?

2021-01-19 金色財經區塊鏈

算法就是為了達成某一目標而進行的一系列操作步驟。從原料到成品,中間的加工過程就叫作算法。一個算法往往是由不同的操作步驟按照一定順序或規則組織起來而形成的。

「加一算法」可以稱得上是世界上最簡單的算法。任何數字通過這個算法後都被加一。

我們要講的哈希算法也是這樣,原始數據經過哈希算法加工以後得到的數據就叫作哈希值(Hash Value)。哈希算法並不是一個算法,而是一大類算法的統稱。由於哈希算法的技術細節已經超綱,我們在這裡不討論它的原理,只介紹這種算法的性質和應用。

哈希算法種類很多,但是它們都具有如下四大性質:

哈希算法性質一:等長性

不管輸入的數據是長是短,算法得出的哈希值都具有相同的長度。哈希值往往很短,通常只有一兩百個字節,佔用的存儲空間很小。

哈希算法性質二:單向性

由數據得出哈希值非常容易,但是從哈希值推導出原始數據是不可能的,即使在知道哈希算法細節的情況下也不可能。這一特性對於確保區塊鏈的安全性至關重要。

哈希算法性質三:無序性

就算原始數據僅僅改變一個字節,它的哈希值也會變得面目全非,完全沒規律。當然,現實中的哈希值不會是任何有含義的文字,往往是一串隨機字符。

哈希算法性質四:一一對應性

同一個原始數據用同樣的哈希算法,永遠得到同樣的哈希值,一個哈希值只能有唯一的數據值與其相對應。

本文來源: 金色財經 / 作者:張譯文

相關焦點

  • 哈希算法是什麼
    我們都知道節點通過哈希算法等來記錄同時段的交易數據以形成塊,這是區塊鏈形成的原因。然而哈希算法是什麼呢?哈希算法又稱雜湊算法、散列算法,就是從任意文件中提取小段「基因」即提取較短的信息來保證文件的唯一性。這種標誌與原文件的每一字節都有關係且無法逆向。所以原文件的任何改變都會直接導致標誌值發生變化,從而來判斷該文件的真偽。OKExChain也正是以此來保護用戶的資金與交易安全。
  • 什麼是一致性哈希算法
    這裡主要記錄一致性Hash算法如何將數據分配到各個機器中去。2,衡量一致性哈希算法好處的四個標準①平衡性。平衡性是指哈希的結果能夠儘可能分布到所有的緩衝中去,這樣可以使得所有的緩衝空間都得到利用。②單調性。單調性是指如果已經有一些數據通過哈希分配到了相應的機器上,又有新的機器加入到系統中。
  • 熊貓人行情:什麼是哈希算法
    這裡是熊貓人~計算機密碼學對區塊鏈技術來說可謂是重中之重我們在閱讀各種區塊鏈項目的白皮書或者區塊鏈相關書籍中也多少會提及XX算法,如哈希算法那麼什麼是哈希算法呢?哈希算法是一種只能加密,不能解密的密碼學算法可以將任意長度的信息轉換成一段固定長度的字符串哈希是一種加密算法哈希函數(Hash Function),也稱為散列函數或雜湊函數。
  • 簡明講解一致性哈希算法
    簡明講解一致性哈希算法哈希算法#如果我們用(用戶id)%伺服器機器數這樣的方法來分配伺服器。雖然我們能保證數據的均勻性,但穩定性差,比如我們增加一個節點,會導致大量的映射失效。所以哈希算法只適用於節點數比較固定的情況,並不能很好的應對節點的變化。一致性哈希算法#這個時候一致性算法就來了,你看這個哈希環它是又大又圓,用它來降低映射關係大量失效的可能性剛剛好。任何一條線段都有無數個點,這個大家應該沒什麼意見吧?所以理論上這個哈希圈是能存儲無限多的東西的。
  • 5分鐘理解一致性哈希算法
    前言一致性哈希算法(Consistent Hashing)在分布式系統的應用還是十分廣泛的,本文儘量結合業務場景快速講解一致性哈希算法的應用及與其相關的話題。1 分布式緩存隨著業務的擴展,流量的劇增,單體項目逐漸劃分為分布式系統。對於經常使用的數據,我們可以使用Redis作為緩存機制,減少數據層的壓力。
  • 揭秘區塊鏈之哈希算法(挖礦)
    1.什麼是哈希算法哈希算法是區塊鏈中用的最多的一種算法,它被廣泛的使用在構建區塊和確認交易的完整性上。它是一類數學函數算法,又被稱為散列算法,需具備三個基本特性:其輸入可為任意大小的字符串、它產生固定大小的輸出、能在合理的時間內就能算出輸出值。
  • 分布式數據緩存中的一致性哈希算法
    普通的哈希表算法一般都是計算出哈希值後,通過取餘操作將 key 值映射到不同的伺服器上,但是當伺服器數量發生變化時,取餘操作的除數發生變化,所有 key 所映射的伺服器幾乎都會改變,這對分布式緩存系統來說是不可以接收的。一致性哈希算法能儘可能減少了伺服器數量變化所導致的緩存遷移。哈希算法首先,一致性哈希算法依賴於普通的哈希算法。
  • 理解數字籤名、加密通信的關鍵:哈希算法
    一個可靠的哈希算法要滿足三點。  第一是安全,給定數據 M 容易算出哈希值 X ,而給定 X 不能算出 M ,或者說哈希算法應該是一個單向算法。第二是獨一無二,兩個不同的數據,要擁有不相同的哈希。第三是長度固定,給定一種哈希算法,不管輸入是多大的數據,輸出長度都是固定的。
  • 圖像相似性算法-感知哈希算法
    1、基於低頻的均值哈希一張圖片就是一個二維信號,它包含了不同頻率的成分。如下圖所示,亮度變化小的區域是低頻成分,它描述大範圍的信息。而亮度變化劇烈的區域(比如物體的邊緣)就是高頻的成分,它描述具體的細節。或者說高頻可以提供圖片詳細的信息,而低頻可以提供一個框架。
  • 關於哈希算法,必須了解這三點
    哈希算法在區塊鏈技術中得到了廣泛的應用,各個區塊之間通過哈希指針連接形成區塊鏈,每個區塊的完整性檢驗將以哈希運算的方式進行。密碼學哈希算法的主要特性就是單向性,即在算法上,只能從輸入值計算得到輸出值,而從輸出值計算得到輸入值是不可行的。
  • 全方位理解哈希算法及其應用,不再迷茫
    一、介紹及原理1.1 簡介哈希算法(Hash)又稱摘要算法(Digest),它的作用是:對任意一組輸入數據進行計算,得到一個固定長度的輸出摘要。比如Java字符串的hashCode()就是哈希算法,輸出是固定的4位元組(32位二進位數)int整數,以16進位(一位數表示為4位二進位)表示,因此表達為類似0x7a9d88e8這種八位數的形式,即32除以4等於8。當然不是所有輸出都會帶0x前綴,但是對我們看到輸出的字符串有 e、a、f 等字母就應該自然而然地想到是十六進位。
  • 10分鐘了解一致性哈希算法,全網(小區區域網)(建議收藏)
    很多同學應該都知道什麼是哈希函數,在後端面試和開發中會遇到「一致性哈希」,那麼什麼是一致性哈希呢?名字聽起來很厲害的樣子,其實原理並不複雜,這篇文章帶你徹底搞懂一致性哈希!進入主題前,先來一場緊張刺激的模擬面試吧。模擬面試面試官:看你簡歷上寫參與了一個大型項目,用到了分布式緩存集群,那你說說你們是怎麼做緩存負載均衡?
  • 圖解一致性哈希算法,全網(小區區域網)最通俗易懂
    ,在後端面試和開發中會遇到「一致性哈希」,那麼什麼是一致性哈希呢?一致性哈希算法負載均衡正是由於普通哈希算法實現的緩存負載均衡存在擴展能力和容錯能力差問題,所以我們引入一致性哈希算法,那麼什麼是一致性哈希呢?
  • Comunion 區塊鏈深度學習系列|哈希算法的應用
    此時可以把這7個數據看成一個整體,前面6個數據是X,把X放在哈希函數裡面,會出來一個值,比如說Y值。由於比特幣網絡裡使用的哈希算法是SHA-256,當Y值出來之後,就會得到一個256個由0和1組成的字符串。這個字符串出來之後,它會和X裡面的難度值比較大小。
  • 職場|程式設計師必須知道的一致性哈希路由算法
    那麼,存儲數據從一個節點變為多個分布式節點的時候,有什麼路由算法能保證同一數據的讀寫都能在一個節點上呢?簡單方案:hash取模的算法取模hash算法的邏輯:對請求的key進行hash運算後,得到一個value值,用value值去和伺服器數量進行取模,得到的結果就對應那一臺機器。
  • 機器學習時代的哈希算法,將如何更高效地索引數據
    哈希算法一直是索引中最為經典的方法,它們能高效地儲存與檢索數據。但在去年 12 月,Jeff Dean 與 MIT 等研究者將索引視為模型,探索了深度學習模型學習的索引優於傳統索引結構的條件。本文首先將介紹什麼是索引以及哈希算法,並描述在機器學習與深度學習時代中,如何將索引視為模型學習比哈希算法更高效的表徵。
  • 區塊鏈基礎-哈希(hash)是什麼
    如果你從事編程,或者對區塊鏈感興趣,那麼哈希這個詞肯定經常聽到,那麼哈希到底是什麼,今天就簡單聊一聊。首先我有一個算法,有一個輸入和一個輸出,換句話說當你輸入一個數據,我返回給你一個數據。我們假定一下我的算法是 +1,然後算法的輸入和輸出都是數字,當你輸入一個數字時,我返回給你一個數字,那麼根據我這個算法,我們就知道,當你輸入一個數字時,輸出的一定是另外一個數字,因為我輸出的數字是在你的基礎上加一,而且我們也知道沒有最大的數字(不考慮計算機能使用的最大數值),這樣就有一個明顯的特點:輸入的數據不同,輸出的數據一定不同。
  • 許多人搞不清的編碼、哈希、對稱加密以及非對稱加密算法的區別
    把編碼、哈希、混淆、加密算法統統叫加密算法,這是一個普遍現象,不只是新手,老鳥也未必能分清楚這些算法的區別,當然也可能是叫著叫著就習慣了吧。什麼哈希算法哈希算法也稱摘要算法,是指把可變長度的數據通過運算得到固定長度散列值的不可逆算法,只要原始數據稍微改動得到的散列值機會完全不同,因為這個特性,哈希算法通常應用於對數據的完整性校驗以及密碼驗證。
  • 人們常說的哈希(Hash)到底是什麼?
    了解過區塊鏈的朋友,一定聽過「哈希」這一詞彙,然而對哈希的概念又極其的模糊,那麼哈希是什麼呢?Hash一般被翻譯成「散列」,也可直接音譯為「哈希」,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。
  • Comunion 區塊鏈深度學習系列|什麼是哈希
    按版本來說才到了SHA-3,其中每個版本相當於一個家族,裡面會包含很多不同的哈希算法。所以如果讀者想設計一個區塊鏈系統,如果裡面涉及到使用哈希算法的話,那麼一定要選擇更好哈希算法,而不是一味模仿之前的系統,這些 SHA 算法僅僅是一個加密算法而已,沒有我們想的那麼神秘。