精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

理解數字簽名和加密通信等技術的關鍵算法哈希算法的介紹

GReq_mcu168 ? 來源:未知 ? 2019-01-13 09:20 ? 次閱讀

哈希是密碼學的基礎,理解哈希是理解數字簽名和加密通信等技術的必要前提。

哈希,英文是 hash ,本來意思是”切碎并攪拌“,有一種食物就叫 Hash ,就是把食材切碎并攪拌一下做成的。哈希函數的運算結果就是哈希值,通常簡稱為哈希。哈希函數有時候也翻譯做散列函數。

根據維基百科的定義,哈希函數要做的事情是給一個任意大小的數據生成出一個固定長度的數據,作為它的映射,所謂映射就是一一對應。

一個可靠的哈希算法要滿足三點

第一是安全,給定數據 M 容易算出哈希值 X ,而給定 X 不能算出 M ,或者說哈希算法應該是一個單向算法。

第二是獨一無二,兩個不同的數據,要擁有不相同的哈希。

第三是長度固定,給定一種哈希算法,不管輸入是多大的數據,輸出長度都是固定的。

但是仔細想一下,如果哈希的長度是固定的,也就是取值范圍是有限的,而輸入數據的取值范圍是無限的,所以總會找到兩個不同的輸入擁有相同的哈希,所以,哈希函數的安全性肯定是個相對概念。

如果出現了兩個不同輸入有相同輸出的情況,就叫碰撞,collision 。不同的哈希算法,哈希位數越多,也就基本意味著安全級別越高,或者說它的”抗碰撞性“就越好。

哈希算法的作用

再來說說哈希函數的主要作用,哈希的獨一無二性,保證了如果數據在存儲或者傳輸過程中有絲毫損壞,那么它的哈希就會變。哈希函數的最常見的一個作用就是進行完整性校驗( Integrity Check ),完整的意思是數據無損壞。

哈希有很多不同的稱呼,有時候叫Digest(摘要),有時候叫Checksum(校驗值),有時候叫Fingerprint(指紋),其實說的意思差不多,也就是說哈希可以用來代表數據本身。

例如朋友給我傳遞一份數據,傳完之后,我有一份,他手里也有一份,如果兩份數據的哈希值是一樣的,那么這兩份數據的內容就是一樣的,或者說可以認為傳遞過程中數據沒有損壞,我手里拿到的數據是完整的。

所以說,哈希函數的基本作用就是給大數據算出一個摘要性的長度固定的字符串,也就是所謂的哈希。

哈希算法的分類

哈希算法有很多種,例如md5、SHA256等等,但是它們總體上可以分為兩大類,一類是普通哈希,另外一類是加密哈希(cryptographic hash function)。

業界可以找到的哈希算法是有很多種的。我們可以大致按照輸出的哈希的長度來聊,雖然哈希算法的安全性也不單單是跟哈希長度有關,但是一般哈希值越長也就是越安全。

例如CRC-32的輸出是32 bit,也就是32位的二進制數,表示成十六進制就是8位。MD5算法的哈希是32位16進制數,比較常見;SHA-256是256個Bit ,十六進制表示就是64位。

這些算法可以分成普通哈希和加密哈希算法,兩種算法之間沒有特別明顯的區別。例如本來MD5就是設計出來做加密哈希的,但是后來由于計算機的發展MD5出現碰撞的可能性就很大了,所以目前MD5只能當普通哈希用,用來做數據校驗。

加密哈希跟普通哈希的區別就是安全性,一般原則是只要一種哈希算法出現過碰撞,就會不被推薦成為加密哈希了,只有安全度高的哈希算法才能用作加密哈希。

同時加密哈希其實也能當普通哈希來用,Git版本控制工具就是用SHA-1這個加密哈希算法來做完整性校驗的。一般來講越安全的哈希算法,處理速度也就越慢,所以并不是所有的場合都適合用加密哈希來替代普通哈希。

哈希算法和加密算法

在密碼學領域,有兩個算法都是把數據做輸入,而輸出是一段誰也看不懂的數據。其中一個就是哈希算法,另外一個是加密算法。注意,哈希算法和加密算法是完全不同的。

哈希算法的輸出長度是固定的,而加密算法的輸出長度是跟數據本身長度直接相關的。

哈希是不可以逆向運算出數據的,而加密算法的輸出是要能夠逆向運算出數據的。

這里主要是強調加密哈希算法只是被用在加密過程中,但是它本身不是加密算法。

總之,哈希算法有很多種,長度越長的算法基本認為越安全。安全度低的哈希算法被認為是普通哈希算法,主要用來做完整性校驗。安全度高的被稱為加密哈希算法,會被用在加密算法中。

所謂的高低都是相對概念,例如MD5曾經屬于加密哈希,但是目前只能用來做安全校驗了。而從2017年開始,SHA-1算法生成的加密證書也會被各大瀏覽器拒絕了。目前最流行的加密算法是SHA-2,但是跟SHA-1不同,SHA-2 不是一種算法,而是一系列算法的統稱,其中就包括咱們之前提過的SHA-256。

實用例子

首先一個場景是網站注冊。當我們提交用戶名密碼的時候,用戶名被會直接保存到網站的數據庫中,但是密碼卻不是直接保存的,而是先把密碼轉換成哈希,保存到數據庫中的其實是哈希。所以,即使是公司后臺管理人員,也拿不到用戶的密碼。這樣,如果萬一公司數據庫泄露了,用戶的密碼依然是安全的。而當用戶自己登錄網站的時候,輸入密碼提交到服務器,服務器上進行相同的哈希運算,因為輸入數據沒變,所以哈希也不會變,登錄也就成功了。

另外一個場景是區塊鏈和加密貨幣中。比特幣地址生成的時候,就用到了 SHA-256 算法,POW 也就是工作量證明,用的也是這個算法。

基本上凡是涉及到密碼學的地方,都會或多或少的用到哈希函數。

總結

哈希的基本作用就是提供一個數據的摘要或者指紋,通常的使用場景就是完整性校驗。哈希算法有很多種,一般來講哈希越長的算法,安全性也就越高,安全度足夠高的哈希,或者說沒有任何人能夠成功實現碰撞的哈希,才有資格被考慮用在加密場合,而這類的哈希算法也被叫做加密哈希算法。

實際中常見的哈希算法有MD5、SHA-1和SHA-256等等,其中MD5通常用來進行數據校驗,SHA-1曾經是加密哈希算法,但是目前已經被除名,也只能做為一種安全度更高的校驗算法了。SHA-256依然是廣泛使用的加密哈希算法,在比特幣生成地址以及POW工作量證明算法中都會用到。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4601

    瀏覽量

    92671
  • 區塊鏈
    +關注

    關注

    110

    文章

    15560

    瀏覽量

    105806
  • 比特幣
    +關注

    關注

    57

    文章

    7002

    瀏覽量

    140363

原文標題:理解數字簽名、加密通信的關鍵:哈希算法

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于橢圓曲線算法數字簽名技術研究

    基于橢圓曲線算法數字簽名技術的基本原理及其安全性,展望了公鑰密碼體制未來的發展方向?!?b class='flag-5'>關鍵詞】:橢圓曲線算法;;
    發表于 04-23 11:29

    關于DENC底層架構和加密算法解釋

    了解一下DENC區塊鏈的通信協議、分布式賬本技術哈希算法到底是怎么一回事?通信協議DENC的底層包含了點對點(Peer-to-Peer,P
    發表于 08-30 09:46

    什么是數字簽名?如何去實現呢

    數字簽名的簡單理解@TOC數字簽名的簡單理解!對于數字簽名,網上有很多大神解釋的很詳細了,我在這里解釋的方法更加簡單,更適用于初學者的入門
    發表于 01-07 07:45

    數字簽名技術的應用研究

    本文介紹了公開密碼加密體制、單向散列函數、認證機構和公鑰管理。并在此基礎上,詳細探討了明文不需要保密的一般數字簽名實現算法、明文需要保密的
    發表于 06-13 13:49 ?37次下載

    基于FPGA的ECC數字簽名方案優化設計

    ECC 數字簽名算法是目前的研究熱點之一。本文根據ECC 數字簽名算法的相關理論,使用Verilog 語言實現了其完整方案,并給予相應的優化。給出了
    發表于 09-12 15:39 ?16次下載

    數字簽名,什么是數字簽名

    數字簽名,什么是數字簽名數字簽名技術出現之前,曾經出現過一種“數字簽名
    發表于 04-03 16:00 ?6316次閱讀

    什么是數字簽名算法(DSA)

    什么是數字簽名算法(DSA) DSA(Digital Signature Algorithm,數字簽名算法,用作數字簽名標準的一部分),它
    發表于 04-03 16:01 ?3518次閱讀

    如何使用ECDSA算法生成數字簽名

    ,ECC需要更小的密鑰來提供同等的安全性。橢圓曲線適用于密鑰協議、數字簽名、偽隨機發生器任務。通過將密鑰協議與對稱加密方案相結合,它們可以間接用于加密。它們也被用于一些基于橢圓曲線的
    發表于 12-27 14:12 ?9125次閱讀
    如何使用ECDSA<b class='flag-5'>算法</b>生成<b class='flag-5'>數字簽名</b>

    區塊鏈數字簽名的好處是什么

    數字簽名也就是我們的公鑰數字簽名和電子簽,類似于我們寫在紙上的簽名,但又有非常大的差別。最大的差別就在于它使用了公鑰加密領域的技術實現,適用
    發表于 03-01 11:00 ?2727次閱讀
    區塊鏈<b class='flag-5'>數字簽名</b>的好處是什么

    數字簽名技術的應用

    加密領域的技術來實現的,用于鑒別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用于簽名,另一個用于驗證。
    的頭像 發表于 08-20 11:31 ?7782次閱讀
    <b class='flag-5'>數字簽名</b><b class='flag-5'>技術</b>的應用

    基于ElGamal數字簽名算法的區塊鏈共識算法

    聯盟鏈是一種允許授權節點加入網絡的區塊鏈,當存在網絡狀況不理想狀況時,會出現節點動態加入退出的問題。為此,在環簽名理論、 Elgamal數字簽名算法與PBFT
    發表于 05-19 11:51 ?10次下載

    哈希是什么,常見的哈希算法有哪些

    理解為一種消息摘要算法,將消息或數據壓縮變小并擁有固定格式。由于其單向運算具有一定的不可逆性,哈希算法已成為加密算法中一個構成部分,但完整
    的頭像 發表于 06-23 14:57 ?7284次閱讀

    區塊哈希競猜游戲系統開發加密哈希算法概述

    ? 哈希算法(Hash function)又稱散列算法,是一種從任何數據(文件、字符)中創建小的數字“指紋”的方法。
    的頭像 發表于 06-24 09:51 ?1108次閱讀
    區塊<b class='flag-5'>哈希</b>競猜游戲系統開發<b class='flag-5'>加密</b><b class='flag-5'>哈希</b><b class='flag-5'>算法</b>概述

    淺談非對稱算法數字簽名

    數字簽名和數據驗簽,你了解有多少?
    的頭像 發表于 09-03 14:53 ?2429次閱讀

    SoC的數字簽名加解密過程

    SoC的數字簽名驗證是指在系統啟動或固件更新關鍵時刻,對加載的固件或軟件進行數字簽名的驗證過程。通過驗證數字簽名,系統可以確保所加載的固件
    的頭像 發表于 10-21 14:52 ?168次閱讀