什麼是哈希算法?

2020-12-13 金色財經區塊鏈

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

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

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

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

哈希算法性質一:等長性

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

哈希算法性質二:單向性

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

哈希算法性質三:無序性

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

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

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

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

相關焦點

  • 哈希算法、哈希值和哈希表
    Hash,是指把任意長度的輸入通過一定的算法變成固定長度的輸出的過程,這個輸出稱作Hash值,或者Hash碼,這個算法叫做Hash算法,或者Hash函數,這個過程我們一般就稱作Hash,或者計算Hash。Hash翻譯為中文有哈希、散列、雜湊等。
  • 哈希算法是理解區塊鏈重要一環
    民間常言:「說唱有嘻哈,算法有哈希。」在了解比特幣投資和區塊鏈技術中,哈希算法作為「常客」時常出現。但大多數朋友對它知之甚少,為它晦澀難懂的內涵所頭疼。那麼今天我們就來簡單說說,什麼是「哈希算法」? 哈希音譯自「Hash」,又名為「散列」。本質上是一種電腦程式,可接收任意長度的信心輸入,然後通過哈希算法,創建小的數字「指紋」的方式。
  • AITD小課堂第十二課:哈希算法是什麼?非對稱加密是什麼?
    哈希算法是什麼? 區塊鏈的四大核心技術分別是密碼學、分布式帳本、共識機制以及智能合約。而密碼學作為其中最重要的一部分,可以說是區塊鏈的基石,而其他技術是以密碼學為地基,才能搭建出區塊鏈這座高樓大廈。
  • Comunion 區塊鏈深度學習系列|哈希算法的應用
    此時可以把這7個數據看成一個整體,前面6個數據是X,把X放在哈希函數裡面,會出來一個值,比如說Y值。由於比特幣網絡裡使用的哈希算法是SHA-256,當Y值出來之後,就會得到一個256個由0和1組成的字符串。這個字符串出來之後,它會和X裡面的難度值比較大小。
  • 10分鐘了解一致性哈希算法,全網(小區區域網)(建議收藏)
    很多同學應該都知道什麼是哈希函數,在後端面試和開發中會遇到「一致性哈希」,那麼什麼是一致性哈希呢?名字聽起來很厲害的樣子,其實原理並不複雜,這篇文章帶你徹底搞懂一致性哈希!進入主題前,先來一場緊張刺激的模擬面試吧。
  • 機器學習時代的哈希算法,將如何更高效地索引數據
    哈希算法一直是索引中最為經典的方法,它們能高效地儲存與檢索數據。但在去年 12 月,Jeff Dean 與 MIT 等研究者將索引視為模型,探索了深度學習模型學習的索引優於傳統索引結構的條件。本文首先將介紹什麼是索引以及哈希算法,並描述在機器學習與深度學習時代中,如何將索引視為模型學習比哈希算法更高效的表徵。
  • 許多人搞不清的編碼、哈希、對稱加密以及非對稱加密算法的區別
    把編碼、哈希、混淆、加密算法統統叫加密算法,這是一個普遍現象,不只是新手,老鳥也未必能分清楚這些算法的區別,當然也可能是叫著叫著就習慣了吧。什麼哈希算法哈希算法也稱摘要算法,是指把可變長度的數據通過運算得到固定長度散列值的不可逆算法,只要原始數據稍微改動得到的散列值機會完全不同,因為這個特性,哈希算法通常應用於對數據的完整性校驗以及密碼驗證。
  • 區塊鏈基礎-哈希(hash)是什麼
    如果你從事編程,或者對區塊鏈感興趣,那麼哈希這個詞肯定經常聽到,那麼哈希到底是什麼,今天就簡單聊一聊。首先我有一個算法,有一個輸入和一個輸出,換句話說當你輸入一個數據,我返回給你一個數據。我們假定一下我的算法是 +1,然後算法的輸入和輸出都是數字,當你輸入一個數字時,我返回給你一個數字,那麼根據我這個算法,我們就知道,當你輸入一個數字時,輸出的一定是另外一個數字,因為我輸出的數字是在你的基礎上加一,而且我們也知道沒有最大的數字(不考慮計算機能使用的最大數值),這樣就有一個明顯的特點:輸入的數據不同,輸出的數據一定不同。
  • 人們常說的哈希(Hash)到底是什麼?
    了解過區塊鏈的朋友,一定聽過「哈希」這一詞彙,然而對哈希的概念又極其的模糊,那麼哈希是什麼呢?Hash一般被翻譯成「散列」,也可直接音譯為「哈希」,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。
  • 關於哈希的一切,都在這裡了!
    本節,我想跟著大家一起重新學習下關於哈希的一切——哈希、哈希函數、哈希表。這三者有什麼樣的愛恨情仇?為什麼Object類中需要有一個hashCode()方法?它跟equals()方法有什麼關係?如何編寫一個高性能的哈希表?
  • 第67p,區域鏈的底層技術之,哈希與密碼加密
    大家好,我是楊數Tos,這是《從零基礎到大神》系列課程的第X篇文章,第三階段的課程:Python進階知識:區域鏈的底層技術之,哈希與密碼加密。一、什麼是哈希值(hash)?哈希(hash)是一類算法的總稱,常見的哈希算法包括:MD4、MD5、sha系列等算法;哈希算法能夠將傳入的內容,經過運算得到一串哈希值。二、哈希有什麼用?1、哈希值的特點A.
  • 什麼是哈希函數
    在講區塊鏈記帳之前,先說明一下哈希函數。哈希函數:Hash(原始信息) = 摘要信息原始信息可以是任意的信息,hash之後會得到一個簡短的摘要信息哈希函數有幾個特點:同樣的原始信息用同一個哈希函數總能得到相同的摘要信息原始信息任何微小的變化都會哈希出面目全非的摘要信息從摘要信息無法逆向推算出原始信息舉例說明:Hash(張三借給李四
  • 哈達瑪矩陣指導下的在線哈希學習新方法
    而視覺哈希編碼技術逐漸成為實現相似性檢索的有效途徑。近日,廈門大學紀榮嶸關於在線哈希學習新方法的論文被發表在 IJCV 上,在論文中紀教授引入哈達瑪矩陣指導哈希函數的學習,即吸取了傳統在線哈希方法的優點,也最大程度上降低了精度損失。另外,對比當前最先進的七種技術,引入哈達瑪矩陣的在線哈希學習都有一定程度的性能提高。
  • SHA-256、MD-5……哈希散列函數這些原理你懂了嗎?
    為什麼要使用哈希函數哈希函數被廣泛應用於網際網路的各個方面,主要用於安全存儲密碼、查找備份記錄、快速存儲和檢索數據等等。例如,Qvault使用哈希散列將主密碼擴展為私人加密密鑰。哈希函數確定性地加擾數據;無論輸入是什麼,哈希函數的輸出大小始終相同;無法從加擾的數據中檢索原始數據(單向函數);確定性地加擾數據首先,想像一個魔方。
  • 師弟不講武德,這編碼算法也講得忒溜了……
    什麼是哈希算法?哈希算法(Hash)又稱摘要算法(Digest),它的作用是:對任意一組輸入數據進行計算,得到一個固定長度的輸出摘要。那麼很容易從輸出123459反推輸入,這種哈希算法就不安全。2.3 Java中使用哈希算法Java標準庫提供了常用的哈希算法,並且有一套統一的接口。
  • 區塊鏈核心知識丨Hash算法原理
    今天我們來講解區塊鏈中「Hash算法」的基本原理。Hash--百科哈希算法將任意長度的二進位值映射為較短的固定長度的二進位值,這個小的二進位值稱為哈希值。如果散列一段明文而且哪怕只更改該段落的一個字母,隨後的哈希都將產生不同的值。要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的,所以數據的哈希值可以檢驗數據的完整性。一般用於快速查找和加密算法。簡單解釋:哈希(Hash)算法,即散列函數。它是一種單向密碼體制,即它是一個從明文到密文的不可逆的映射,只有加密過程,沒有解密過程。
  • 媒體檢索排序與哈希索引簡介
    目前多媒體數據哈希索引的研究方向大致分為三類:(1)單一類型特徵哈希索引,指以單類型的高維特徵為輸入的一類哈希算法的總稱;(2)多視圖哈希索引,指從數據中提取不同類型特徵和屬性等進行索引的方法;(3)跨媒體哈希索引,指對包含異構類型數據的信息資源進行哈希索引。
  • Python哈希表:了解哈希函數與字典
    答案是它們建立在另一種技術之上:哈希表。了解Python哈希表的工作方式將使你對Python字典的工作方式有更深入了解,這對於Python理解是一個很大的優勢,因為字典在Python中幾乎無處不在。哈希函數是一種可以將任意長度的數據映射到固定長度的值(稱為hash)的函數。哈希函數具有三個主要特徵:它們的計算速度很快:計算一條數據的哈希值必須是一項快速的操作。
  • 漫畫:什麼是字符串匹配算法?
    ————— 第二天 —————什麼意思呢?讓我們來舉一個例子:在上圖中,字符串B是A的子串,B第一次在A中出現的位置下標是2(字符串的首位下標是0),所以返回 2。由此得到結果,模式串 bce 是主串 abbcefgh 的子串,在主串第一次出現的位置下標是 2:以上就是小灰想出的解決方案,這個算法有一個名字,叫做BF算法,是Brute Force(暴力算法)的縮寫。
  • 每天一道LeetCode算法題——兩數之和
    說來慚愧,算法書看了不止一本,但是看書的時候書裡的練習都沒有怎麼思考,直接看的參考答案,導致了對算法的研究僅僅停留在了解這種程度,缺乏實戰所以在平時coding中也不會將算法知識代入使用。於是開始了LeetCode刷題之旅~題目描述給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。