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

2021-01-07 比特幣小白

加密算法導讀

加密一般分為對稱加密(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 倍。對稱加密優缺點:對稱加密相比非對稱加密算法來說,加解密的效率要高得多、加密速度快。但是缺陷在於對於密鑰的管理和分發上比較困難,不是非常安全,密鑰管理負擔很重。非對稱加密優缺點:安全性更高,公鑰是公開的,密鑰是自己保存的,不需要將私鑰給別人。缺點:加密和解密花費時間長、速度慢,只適合對少量數據進行加密。

相關焦點

  • 數據加密中的DES加密算法詳解
    本文引用地址:http://www.eepw.com.cn/article/202130.htm[關鍵詞] 加密 對稱 非對稱 DES 密鑰 明文 密文從最初的保密通信發展到目前的網絡信息加密,信息加密技術一直伴隨著信息技術的發展而發展。作為計算機信息保護的最實用和最可靠的方法,信息加密技術被廣泛應用到信息安全的各個領域。
  • 區塊鏈丨非對稱加密算法,區塊鏈的加密秘訣!
    前面講到了對稱加密算法,今天講講非對稱加密算法。可以說非對稱算法是對稱算法的升級,因為非對稱算法是基於對稱算法而被研究出來的。非對稱算法與對稱算法的不同之處在於非對稱算法省去了對稱加密算法時要分發密鑰的麻煩,所以說是對稱加密算法的升級。在非對稱加密算法中同樣具有兩種密鑰:私鑰(private key)和公鑰(public key)。
  • DES、RC4、AES等加密算法優勢及應用
    程式設計師捍衛自己珍貴的代碼,全靠花式的加密算法。代碼加密有多重要?程式設計師半年做出的產品,盜版者可能半天就能完全破解。  加密算法的本質,首先是為了對數據進行保密並防止篡改,其次更具有了身份驗證的功能。像是你跟女友約定好的話術,這句話一說出來,她就知道是什麼意思,並且知道說話的人是你,但任何其他人根本不知道你們在說什麼。  根據密鑰類型的不同,加密算法分為對稱和非對稱兩種。
  • 什麼是加密算法?
    常用的加密算法有對稱加密算法,非對稱加密算法,哈希算法,數字籤名等幾類。    對稱加密顧名思義就是加密和解密是對稱的,加密時用一個秘鑰去加密,解密時用同一個秘鑰去解密,由信息發送方和接收方共同約定一個秘鑰。缺點是風險都在這個秘鑰上面,一旦被竊取,信息會暴露。所以安全級別不夠高。常用對稱加密算法有DES,3DES,AES等。在jdk中也都有封裝。
  • 區塊鏈丨對稱加密算法
    在前面的文章中,有提到「對稱加密算法」,這是一種相對應用得比較早的加密算法之一,其技術也是比較成熟的。在執行對稱加密時,數據發出方將需要明文(之前的文章中有解釋)和加密密鑰一起輸入至加密算法中進行處理,使之變成更為複雜的加密密文,之後再將密文發布出去。
  • 常見加密算法DES、AES和RSA的原理和特點
    本文轉載自【微信公眾號:strongerHuang,ID:strongerHuang】經微信公眾號授權轉載,如需轉載與原文作者聯繫主要總結下常用的對稱性加密算法DES和AES,非對稱性加密算法RSA。1DES加密算法1.DES含義DES全稱為Data Encryption Standard,即數據加密標準,是一種使用密鑰加密的塊算法,1977年被美國聯邦政府的國家標準局確定為聯邦資料處理標準(FIPS),並授權在非密級政府通信中使用,隨後該算法在國際上廣泛流傳開來。DES是對稱性加密裡常見的一種,是一種使用秘鑰加密的塊算法。
  • 什麼是非對稱加密?
    豪華陣容的背後只有一個目的,就是使用強大的加密算法來保護個人信息和隱私免受攻擊。而非對稱加密算法也是比特幣存在的重要基石,中本聰在密碼學基礎之上用代碼創造了比特幣,將非對稱加密推向了一個嶄新的高潮。了解非對稱加密之前,我們先要理解什麼是對稱加密?
  • 三分鐘了解對稱加密和非對稱加密是如何工作的?
    其中提到的數字籤名方案,無論是 RSA,還是 ECDSA 或 Schnorr 加密算法,都是非對稱加密算法。那麼什麼是非對稱加密?什麼又是對稱加密?為了解決這個問題,就有了非對稱加密。非對稱加密( Asymmetric Cryptography )非對稱加密,又稱公鑰加密,它解決了對稱加密的缺陷,使得比特幣更安全。
  • 加密類型:5種加密算法以及如何選擇正確的算法
    在深入探討5種最常用的加密算法,以前所未有地簡化它們之前,我們將分解兩種主要的加密類型,對稱和非對稱。加密是始終成為頭條新聞的那些網絡安全主題之一。對不同類型的加密有充分了解的任何人都可能會覺得,這種非凡的技術正處於一種不公正的狀態,而這種非凡的技術是Internet安全和隱私的核心。
  • 一種基於DES加密算法的加密方法
    摘要:本發明公開了一種基於DES加密算法的加密方法,其加密方法採用服務端與客戶端共享密鑰集文件,實現通信過程中使用動態密鑰的對稱加密方法,建立密鑰集文件,密鑰集文件由三個互相垂直方向的X、Y、Z組成的長方體形的三維模型;伺服器端在X、Y有效值範圍內隨機一個坐標,確定一組密鑰,進行DES加密;將選取的X、Y分別值轉換為4位16進位數
  • 淺談對稱加密中的流加密
    之前介紹的對稱加密算法都是分組加密,如DES,3DES,SM4等。被加密的原文需要分成組,每組長度與密鑰長度相同,再分別加密。實際上,對稱加密裡還有一種類型算法叫做流加密。所謂流加密,就是使用一個與原文同樣長度的密鑰,與原文數據按位進行異或操作,得到的結果就是密文。
  • 到底什麼是DES加密算法?這樣理解試試!
    在說DES加密算法之前,我們首先了解幾個基本概念:明文:明文是指沒有經過加密的數據。一般而言,明文都是等待傳輸的數據。由於沒有經過加密,明文很容易被識別與破解,因此在傳輸明文之前必須進行加密處理。密文:密文只是明文經過某種加密算法而得到的數據,通常密文的形式複雜難以識別及理解。
  • 區塊鏈中的密碼學系列之對稱加密算法DES(六)
    前言DES是一種數據加密標準( Data Encryption Standard) , 有30多年歷史,是一種對稱密碼算法,是第一個得到廣泛應用的密碼算法,是一種分組加密算法,輸入的明文為64位,密鑰為64位(實際上只有56位,原因是每隔7個比特設置一個奇偶校驗位),生成的密文分組長度為64位。但是現在已經不再安全。課件來自我們老師上課的PPT。2.
  • 對稱加密和非對稱公鑰加密有什麼區別
    對稱加密技術對稱加密也有缺點發件人和收件人都必須使用相同的密鑰。如果使用對稱加密技術傳輸數據並確保其他人不會截取數據,則必須向接收者共享密鑰。 如果收件人住在附近,可以通過信封或其他線路直接傳遞密鑰,但如果收件人來自其他州或其他國家,該怎麼辦? 在這種情況下,發送密鑰的任務非常困難,因此需要另一種技術「非對稱加密」來克服這個問題。
  • 最安全的加密算法RSA
    前幾天朋友讓我贈送她魔遊紀系列電影,於是贈送了,每部還剩四個名額不能浪費了,這裡送給大家,回復公眾號"魔遊紀N"得到對應的贈送連結,N代表第幾部,目前只有3、4、5。零、背景之前介紹了AES加密算法,這個算法的缺點是加密鑰匙和解密鑰匙一樣,缺少安全性。
  • 小叮噹Python進階(二):爬蟲與加密算法Part2之DES
    DESDES算法為密碼體制中的對稱密碼體制,又被稱為數據加密標準。DES是一個分組加密算法,典型的DES以64位為分組對數據加密,加密和解密用的是同一個算法。在DES算法中,Key為7個字節共56位,是DES算法的工作密鑰;Data為8個字節64位,是要被加密或被解密的數據;Mode為DES的工作方式。有兩種工作方式,加密或解密。密鑰長64位,密鑰事實上是56位參與DES運算(第8、16、24、32、40、48、56、64位是校驗位,使得每個密鑰都有奇數個1),分組後的明文組和56位的密鑰按位替代或交換的方法形成密文組。
  • 【深度】關於非對稱加密你知道多少?
    答案是「非對稱加密「。2、什麼是「非對稱加密」?非對稱加密比慈禧的對稱加密晚出生80年,至於為什麼要晚那麼久,因為必須要等到有了計算機網絡,人們有了安全傳輸文件的需求,才能點燃研究的火焰。這一把火直接燒出了「非對稱加密「——一種更安全的加密技術。與對稱加密不同,非對稱加密不支持逆推。
  • 目前已知的最強加密算法RSA
    RSARSA是一種非對稱加密算法,1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的,因此以三人姓氏的首字母命名了該非對稱加密算法,RSA算法。
  • 利用彙編語言實現DES加密算法
    DES算法是一種數據加密算法。自從1977年公布以來,一直是國際上的商用保密通信和計算機通信的最常用的加密標準。DES算法的實現一般用高級語言。
  • 用OpenSSL加密文件
    / 怎樣用對稱密碼加密文件?Openssl的子命令,用於用對稱密碼加密或解密一個文件.-des3the algorithm is des3.使用des3算法.-eencrypt a file.It's counterpart is '-d',decrypt.加密文件.與之相對的是-d,表示解密.