加密算法科普:des、aes加密、對稱、非對稱加密、Hash算法都是啥

2020-12-14 比特幣小白

加密算法導讀

加密一般分為對稱加密(Symmetric Key Encryption)和非對稱加密(Asymmetric Key Encryption)常見的對稱加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6 和 AES常見的非對稱加密算法:RSA、ECC (行動裝置用)、Diffie-Hellman、El Gamal、DSA (數字籤名用)常見的 Hash 算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1分組加密算法中,有ECB,CBC,CFB,OFB這幾種算法模式

什麼是對稱密碼算法

網絡安全通信中要用到兩類密碼算法,加密一般分為對稱加密(Symmetric Key Encryption)和非對稱加密(Asymmetric Key Encryption)。對稱密碼算法有時又叫傳統密碼算法、秘密密鑰算法或單密鑰算法,非對稱密碼算法也叫公開密鑰密碼算法或雙密鑰算法。對稱密碼算法的加密密鑰能夠從解密密鑰中推算出來,反過來也成立。在大多數對稱算法中,加密解密密鑰是相同的。它要求發送者和接收者在安全通信之前,商定一個密鑰。對稱算法的安全性依賴於密鑰,洩漏密鑰就意味著任何人都能對消息進行加密解密。只要通信需要保密,密鑰就必須保密。對稱算法又可分為兩類。一次只對明文中的單個位(有時對字節)運算的算法稱為序列算法或序列密碼。另一類算法是對明文的一組位進行運算,這些位組稱為分組,相應的算法稱為分組算法或分組密碼。現代計算機密碼算法的典型分組長度為64位――這個長度既考慮到分析破譯密碼的難度,又考慮到使用的方便性。後來,隨著破譯能力的發展,分組長度又提高到128位或更長。常用的採用對稱密碼術的加密方案有5個組成部分:1)明文:原始信息。2)加密算法:以密鑰為參數,對明文進行多種置換和轉換的規則和步驟,變換結果為密文。3)密鑰:加密與解密算法的參數,直接影響對明文進行變換的結果。4)密文:對明文進行變換的結果。5)解密算法:加密算法的逆變換,以密文為輸入、密鑰為參數,變換結果為明文。分組加密算法中,一般有ECB,CBC,CFB,OFB這幾種算法模式。

什麼是DES加密

DES是Data Encryption Standard(數據加密標準)的縮寫。它是由IBM公司研製的一種對稱密碼算法,美國國家標準局於1977年公布把它作為非機要部門使用的數據加密標準,三十年來,它一直活躍在國際保密通信的舞臺上,扮演了十分重要的角色。DES是一個分組加密算法,典型的DES以64位為分組對數據加密,加密和解密用的是同一個算法。它的密鑰長度是56位(因為每個第8 位都用作奇偶校驗),密鑰可以是任意的56位的數,而且可以任意時候改變。其中有極少數被認為是易破解的弱密鑰,但是很容易避開它們不用。所以保密性依賴於密鑰。DES加密的算法框架如下:首先要生成一套加密密鑰,從用戶處取得一個64位長的密碼口令,然後通過等分、移位、選取和迭代形成一套16個加密密鑰,分別供每一輪運算中使用。DES解密過程:在了解了加密過程中所有的代替、置換、異或和循環迭代之後,讀者也許會認為,解密算法應該是加密的逆運算,與加密算法完全不同。恰恰相反,經過密碼學家精心設計選擇的各種操作,DES獲得了一個非常有用的性質:加密和解密使用相同的算法!加密工作模式:ECB、CBC、CFB、OFB

ECB 電子密碼本模式:Electronic codebook 每塊堵路加密優點:分塊處理 並行處理缺點:同樣的原文得到相同的密文 容易被攻擊CBC 密碼分組連結:Cipher-block chaining 每塊加密依賴前一塊的密文優點:同樣的原文得到不同的密文 原文微下的改變影響後面全部密文缺點:加密需要串行處理 誤差傳遞CFB Cipher Feedback (CFB)/密文反饋模式密文反饋(CFB,Cipher feedback)模式類似於CBC,可以將塊密碼變為自同步的流密碼;工作過程亦非常相似,CFB的解密過程幾乎就是顛倒的CBC的加密過程:需要使用一個與塊的大小相同的移位寄存器,並用IV將寄存器初始化。然後,將寄存器內容使用塊密碼加密,然後將結果的最高x位與平文的x進行異或,以產生密文的x位。下一步將生成的x位密文移入寄存器中,並對下面的x位平文重複這一過程。解密過程與加密過程相似,以IV開始,對寄存器加密,將結果的高x與密文異或,產生x位平文,再將密文的下面x位移入寄存器。與CBC相似,平文的改變會影響接下來所有的密文,因此加密過程不能並行化;而同樣的,與CBC類似,解密過程是可以並行化的。OFB Output Feedback (OFB)/輸出反饋模式輸出反饋模式(Output feedback, OFB)可以將塊密碼變成同步的流密碼。它產生密鑰流的塊,然後將其與平文塊進行異或,得到密文。與其它流密碼一樣,密文中一個位的翻轉會使平文中同樣位置的位也產生翻轉。這種特性使得許多錯誤校正碼,例如奇偶校驗位,即使在加密前計算而在加密後進行校驗也可以得出正確結果。每個使用OFB的輸出塊與其前面所有的輸出塊相關,因此不能並行化處理。然而,由於平文和密文只在最終的異或過程中使用,因此可以事先對IV進行加密,最後並行的將平文或密文進行並行的異或處理。可以利用輸入全0的CBC模式產生OFB模式的密鑰流。這種方法十分實用,因為可以利用快速的CBC硬體實現來加速OFB模式的加密過程。

什麼是3DES加密

3DES,即triple-DES,簡單地說就是3次DES加解密的組合。現已不推薦使用。(E表示Encrypt,D表示Decrypt。)加密:cipthertext = E(k3, D(k2, E(k1, plaintext)))解密:plaintext = D(k1, E(k2, D(k3, ciphertext)))特點:如果三個密鑰都一樣,拿剛好和DES一樣。

什麼是AES加密

AES, Advanced Encryption Standard,是現行的對稱加密標準。目前(2017)如果使用對稱加密,應該使用AES。當然,只能說當前AES算法是安全的,不能保證AES永遠都是安全的。分組:128bit。密鑰:128bit、192bit、256bit。Go語言包只支持128bit,因此下例子中使用的是128bit

DSA (Digital Signature Algorithm)

DSA(Digital Signature Algorithm)是Schnorr和ElGamal籤名算法的變種,被美國NIST作為DSS(DigitalSignature Standard)。DSA加密算法主要依賴於整數有限域離散對數難題,素數P必須足夠大,且p-1至少包含一個大素數因子以抵抗Pohlig &Hellman算法的攻擊。M一般都應採用信息的HASH值。DSA加密算法的安全性主要依賴於p和g,若選取不當則籤名容易偽造,應保證g對於p-1的大素數因子不可約。其安全性與RSA相比差不多。DSA 一般用於數字籤名和認證。在DSA數字籤名和認證中,發送者使用自己的私鑰對文件或消息進行籤名,接受者收到消息後使用發送者的公鑰來驗證籤名的真實性。DSA只是一種算法,和RSA不同之處在於它不能用作加密和解密,也不能進行密鑰交換,只用於籤名,它比RSA要快很多.

ECC (Elliptic Curves Cryptography),橢圓曲線密碼編碼學。

橢圓曲線密碼學(英語:Elliptic curve cryptography,縮寫為ECC),一種建立公開密鑰加密的算法,基於橢圓曲線數學。橢圓曲線在密碼學中的使用是在1985年由Neal Koblitz和Victor Miller分別獨立提出的。橢圓曲線密碼學的主要優勢是在某些情況下它比其他的方法使用更小的密鑰 — — 比如RSA加密算法 — — 提供相當的或更高等級的安全。橢圓曲線密碼學的另一個優勢是可以定義群之間的雙線性映射,基於Weil對或是Tate對;雙線性映射已經在密碼學中發現了大量的應用,例如基於身份的加密。不過一個缺點是加密和解密操作的實現比其他機制花費的時間長。橢圓曲線密碼學,是一種建立公開密鑰加密的算法,也就輸非對稱加密.類似的還有RSA,EIGamal算法等.ECC被公認為在給定密鑰長度下最安全的加密算法.雙線性映射解釋:在數論中,一個雙線性映射是由兩個向量空間上的元素,生成第三個向量空間上一個元素之函數,並且該函數對每個參數都是線性的。

什麼是RSA

RSA加密算法是一種非對稱加密算法,在公開密鑰加密和電子商業中被廣泛使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。這種算法非常可靠,密鑰越長,它就越難破解。根據已經披露的文獻,目前被破解的最長RSA密鑰是768個二進位位。也就是說,長度超過768位的密鑰,還無法破解(至少沒人公開宣布)。因此可以認為,1024位的RSA密鑰基本安全,2048位的密鑰極其安全。RSA算法用到的數學知識尋找兩個不相同的質數模運算互質數,又稱互素。若N個整數的最大公因子是1,則稱這N個整數互質。指數運算同餘根據歐拉函數和歐拉公式模反元素

ECC 和 RSA 相比

抗攻擊性強。相同的密鑰長度,其抗攻擊性要強很多倍。計算量小,處理速度快。ECC 總的速度比 RSA、DSA 要快得多。存儲空間佔用小。ECC 的密鑰尺寸和系統參數與 RSA、DSA 相比要小得多,意味著它所佔的存貯空間要小得多。這對於加密算法在 IC 卡上的應用具有特別重要的意義。帶寬要求低。當對長消息進行加解密時,三類密碼系統有相同的帶寬要求,但應用於短消息時 ECC 帶寬要求卻低得多。帶寬要求低使 ECC 在無線網絡領域具有廣泛的應用前景。

什麼是非對稱加密

公開密鑰加密(英語:public-key cryptography,又譯為公開密鑰加密),也稱為非對稱加密(asymmetric cryptography),一種密碼學算法類型,在這種密碼學方法中,需要一對密鑰(其實這裡密鑰說法不好,就是「鑰」),一個是私人密鑰,另一個則是公開密鑰。這兩個密鑰是數學相關,用某用戶密鑰加密後所得的信息,只能用該用戶的解密密鑰才能解密。如果知道了其中一個,並不能計算出另外一個。因此如果公開了一對密鑰中的一個,並不會危害到另外一個的秘密性質。稱公開的密鑰為公鑰;不公開的密鑰為私鑰。--wiki百科

指的是加、解密使用不同的密鑰,一把作為公開的公鑰,另一把作為私鑰。公鑰加密的信息,只有私鑰才能解密。反之,私鑰加密的信息,只有公鑰才能解密。俗話來說:「要想使用非對稱加密算法,首先要有一對key,一個被稱為private key私鑰,一個成為public key公鑰,然後可以把你的public key分發給想給你傳密文的用戶,然後用戶使用該public key加密過得密文,只有使用你的private key才能解密,也就是說,只要你自己保存好你的private key,就能確保,別人想給你發的密文不被破解,所以你不用擔心別人的密鑰被盜,沒關係。 」

Hash 算法

Hash 算法特別的地方在於它是一種單向算法,用戶可以通過 Hash 算法對目標信息生成一段特定長度的唯一的 Hash 值,卻不能通過這個 Hash 值重新獲得目標信息。因此 Hash 算法常用在不可還原的密碼存儲、信息完整性校驗等。單向散列函數一般用於產生消息摘要,密鑰加密等,常見的有:MD5 (Message Digest Algorithm 5):是 RSA 數據安全公司開發的一種單向散列算法,非可逆,相同的明文產生相同的密文;SHA (Secure Hash Algorithm):可以對任意長度的數據運算生成一個 160 位的數值。SHA-1 與 MD5 的比較 :因為二者均由 MD4 導出,SHA-1 和 MD5 彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:對強行供給的安全性:最顯著和最重要的區別是 SHA-1 摘要比 MD5 摘要長 32 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對 MD5 是 2128 數量級的操作,而對 SHA-1 則是 2160 數量級的操作。這樣,SHA-1 對強行攻擊有更大的強度;對密碼分析的安全性:由於 MD5 的設計,易受密碼分析的攻擊,SHA-1 顯得不易受這樣的攻擊;速度:在相同的硬體上,SHA-1 的運行速度比 MD5 慢。

對稱加密與非對稱加密對比

在管理方面:公鑰密碼算法只需要較少的資源就可以實現目的,在密鑰的分配上,兩者之間相差一個指數級別(一個是 n 一個是 n2)。所以私鑰密碼算法不適應廣域網的使用,而且更重要的一點是它不支持數字籤名;在安全方面:由於公鑰密碼算法基於未解決的數學難題,在破解上幾乎不可能。對於私鑰密碼算法,到了 AES 雖說從理論來說是不可能破解的,但從計算機的發展角度來看。公鑰更具有優越性;從速度上來看:AES 的軟體實現速度已經達到了每秒數兆或數十兆比特。是公鑰的 100 倍,如果用硬體來實現的話這個比值將擴大到 1000 倍。對稱加密優缺點:對稱加密相比非對稱加密算法來說,加解密的效率要高得多、加密速度快。但是缺陷在於對於密鑰的管理和分發上比較困難,不是非常安全,密鑰管理負擔很重。非對稱加密優缺點:安全性更高,公鑰是公開的,密鑰是自己保存的,不需要將私鑰給別人。缺點:加密和解密花費時間長、速度慢,只適合對少量數據進行加密。

相關焦點

  • 對稱加密及AES加密算法
    2、對稱加密的工作過程 3、對稱加密的優點 4、對稱加密的兩大不足二、AES加密算法 1、什麼是AES加密算法及AES加密算法的形成過程 2、AES的加密流程(要理解AES的加密流程,會涉及到AES的五個關鍵詞:分組密碼體制、Padding、初始向量IV、密鑰、四種加密模式) 3、AES的加密原理(要理解AES的加密原理,會涉及到AES的四個關鍵詞:密鑰擴展、初始輪、重複輪、最終輪
  • 一文讀懂對稱加密算法、非對稱加密算法和Hash算法
    一、簡述常見的加密算法可以分成三類,對稱加密算法,非對稱加密算法和Hash算法。對稱加密指加密和解密使用相同密鑰的加密算法。對稱加密算法的優點在於加解密的高速度和使用長密鑰時的難破解性。我們應該根據自己的使用特點來確定,由於非對稱加密算法的運行速度比對稱加密算法的速度慢很多,當我們需要加密大量的數據時,建議採用對稱加密算法,提高加解密速度。對稱加密算法不能實現籤名,因此籤名只能非對稱算法。由於對稱加密算法的密鑰管理是一個複雜的過程,密鑰的管理直接決定著他的安全性,因此當數據量很小時,我們可以考慮採用非對稱加密算法。
  • 對稱加密與非對稱加密
    這個問題是一個讀者面試時遇到的一個問題,準備過面試的人應該都記得,非對稱加密與對稱加密的區別之一就是非對稱加密的速度慢,但是我們做業務開發的時候通常都是直接調用算法,對其原因並沒有過多深究,因此如果有面試官問到了這個問題,的確會讓人措手不及
  • JAVA實現對稱加密
    一、對稱加密算法-DES"BC"); generator.init(56); SecretKey secretKey = generator.generateKey();byte[] keyCode = secretKey.getEncoded();二、對稱加密算法
  • Java利用DES / 3DES / AES這三種算法分別實現對稱加密
    ,你若失掉了算法和數據結構,你就把一切都失掉了。 2)編程就是算法和數據結構,算法和數據結構是編程的靈魂。 注意,這可不是我說的,是無數程式設計師總結的,話說的很實在也很精闢,若想長久可持續發展,多研究算法還是很有必要的,今天我給大家說說加密算法中的對稱加密算法,並且這裡將教會大家對稱加密算法的編程使用。包含DES、3DES和AES三種對稱加密算法的編程使用,乾貨滿滿。
  • 非對稱加密算法——RSA加密原理及數學推導
    百度百科是這麼說的:RSA是一種非對稱的加密機制。是一種公開密鑰密碼體制。所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種「由已知加密密鑰推導出解密密鑰在計算上是不可行的」密碼體制。是由該算法設計者「Rivest、Shamir、Adleman」的名字構成,(可能看之前還認識「RSA」三個字母,看完後迷糊了。下面將詳細介紹。)
  • 為什麼非對稱加密比對稱加密慢?
    這個問題是一個讀者面試時遇到的一個問題,準備過面試的人應該都記得,非對稱加密與對稱加密的區別之一就是非對稱加密的速度慢,但是我們做業務開發的時候通常都是直接調用算法
  • 區塊鏈丨對稱加密算法
    在前面的文章中,有提到「對稱加密算法」,這是一種相對應用得比較早的加密算法之一,其技術也是比較成熟的。在執行對稱加密時,數據發出方將需要明文(之前的文章中有解釋)和加密密鑰一起輸入至加密算法中進行處理,使之變成更為複雜的加密密文,之後再將密文發布出去。
  • DES加密算法
    (1)定義在對稱加密算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密算法處理後,使其變成複雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。
  • AES加密算法的詳細介紹【面試+工作】
    AES簡介高級加密標準(AES,Advanced Encryption Standard)為最常見的對稱加密算法(微信小程序加密傳輸就是用這個加密算法的)。對稱加密算法也就是加密和解密用相同的密鑰,具體的加密流程如下圖: 下面簡單介紹下各個部分的作用與意義:明文P沒有經過加密的數據。
  • 神奇的非對稱加密
    無知與成見,往往會在世界上鑄成比詭詐與惡意更多的過錯——歌德 我們都知道,區塊鏈技術是計算機密碼學的延伸和應用。所以,密碼學作為區塊鏈的基石,其重要性不言而喻。 區塊鏈技術運用的密碼學算法主要為兩個部分:一是哈希算法,二是非對稱加密算法。
  • 非對稱加密——RSA
    本周先介紹RSA算法,希望能為非對稱加密的講解開個好頭~        在前兩篇文章中我們介紹了DES、AES、IDEA等多種對稱加密算法,雖然這些算法通過複雜的運算邏輯來保證其加密的安全性,但所有對稱加密算法都會存在密鑰配送問題。
  • 聊聊對稱/非對稱加密在HTTPS中的使用
    對稱/非對稱加密算法能夠避免信息竊取,而消息摘要算法能夠避免信息篡改。對稱加密算法發送方和接收方需要持有同一把密鑰,發送消息和接收消息均使用該密鑰。相對於非對稱加密,對稱加密具有更高的加解密速度,但雙方都需要事先知道密鑰,密鑰在傳輸過程中可能會被竊取,因此安全性沒有非對稱加密高。
  • JAVA實現非對稱加密
    一、概述非對稱加密算法概述,非對稱主要是相對於對稱加密算法而言的,對稱加密算法有一個密鑰和一個解鑰,非對稱算法有一個公鑰和一個私鑰,這兩個共同組成一個解鑰,才能實現解密。DH:密鑰交換算法,算是非對稱加密算法的起源。RSA:基於因子分解,應用最廣,RSA是可以雙向加密的,私鑰加密,公鑰解密;公鑰加密,私鑰解密,是目前世界上使用最廣的非對稱加密算法。ELGamal:基於離散對數。ECC:橢圓曲線加密。
  • 網絡安全加密——DES、AES、RSA、Base64、MD5加密原理介紹,代碼實現
    本專題將連續的、全方位的、深入地闡述網絡安全加密的原理及實用案例分析,希望對學習網絡安全的你有幫助,覺得有用記得轉發給身邊需要的朋友哈~~ 學好密碼技術變身信息安全保護神,科普式教學的《現代密碼學》全新上線,乾貨+視頻,學習效果槓槓滴,別說小編沒告訴你~特別感謝本期作者——時間已靜止。
  • 非對稱加密與安全證書看這一篇就懂了
    可逆加密算法可分成三類:基於算法的加密算法,也被稱為古典加密算法,如 HTTP 認證中的 base64,比特幣生成地址用的 base58(公開的算法也可稱作編碼方式)。這類算法主要對原始內容進行置換和替換得到密文,安全性依賴於算法是否外洩;對稱加密算法,加密和解密使用同一個密鑰。對稱加密算法的出現標誌密碼學進入現代密碼學階段,密文的安全性從依賴於算法轉向依賴於密鑰。
  • 算法科普:神秘的 DES 加密算法
    1、前言DES 算法是一種常見的分組加密算法,由IBM公司在1971年提出。DES 算法是分組加密算法的典型代表,同時也是應用最為廣泛的對稱加密算法。本文將詳細講述DES 的原理以及實現過程。1.1 明文明文是指沒有經過加密的數據。一般而言,明文都是等待傳輸的數據。由於沒有經過加密,明文很容易被識別與破解,因此在傳輸明文之前必須進行加密處理。
  • AITD小課堂第十二課:哈希算法是什麼?非對稱加密是什麼?
    區塊鏈主要應用的密碼學算法有兩個部分:一個哈希算法,另一個是非對稱加密。 簡單來說,哈希算法就是一種特殊的函數,不論輸入多長的一串字符,只要通過這個函數都可以得到一個固定長度的輸出值,這就好像身份證號碼一樣,永遠都是十八位而且全國唯一。哈希算法的輸出值就叫做哈希值。
  • AES加密算法(一)
    ,每組長度相等,每次加密一組數據,直到加密完整個明文。而常見的非對稱加密算法有RSA、ECC和EIGamal。由於上一代的DES算法密鑰長度小(56bits),容易被破解而被AES取代。在AES標準規範中,分組長度只能是128位,每個分組為16個字節。密鑰的長度有三種,分別是128位、192位、256位。密鑰的長度不同,推薦加密輪數也不同,如下表所示:晶片中設計中,AES加密算法隨處可見。
  • 小知識科普篇——關於加密算法
    HMAC發送方和接收方都有的key進行計算,而沒有這把key的第三方,則是無法計算出正確的散列值的,這樣就可以防止數據被篡改。4、AES/DES/3DES算法AES、DES、3DES 都是對稱的塊加密算法,解密的過程是可逆的。