許多人搞不清的編碼、哈希、對稱加密以及非對稱加密算法的區別

2020-12-03 吳哥帶你學安全

「我的數據經過了base64加密,不用擔心輸出亂碼的問題。」

「我的密碼是經過MD5加密存儲的。」

工作這麼多年經常碰到有人這樣說,一開始我還煞有介事地去糾正,後來聽多了好像也就習慣了。把編碼、哈希、混淆、加密算法統統叫加密算法,這是一個普遍現象,不只是新手,老鳥也未必能分清楚這些算法的區別,當然也可能是叫著叫著就習慣了吧。

最近在頭條上看到不少技術文章還在犯這種錯誤,作為有點強迫症傾向的我,今天就再多嘴一次,希望搜尋引擎上類似的關鍵字會越來越少吧(其實最主要的是要多漲粉):

什麼是編碼算法?

簡單地說,編碼算法是對二進位數據的一個呈現方式,是為了能讓人類更好識別枯燥的二進位數據,以及讓計算機能理解人類抽象的文字而制定的一套二進位與字符之間的轉換規則。(註:這裡的編碼特指數據編碼,而非圖片、音視頻等編碼算法。

常見的編碼有ASCII、Unicode、UTF8、URL編碼、HTML編碼及Base64等,這些都是以不同形式表示二進位數據的算法,比如Base64算法把3個字節共24bit分成長度為6bit的四段,並以「a-zA-Z0-9+/」共64個ASCII字符以及作為補全字符的「=」表示。

什麼哈希算法

哈希算法也稱摘要算法,是指把可變長度的數據通過運算得到固定長度散列值的不可逆算法,只要原始數據稍微改動得到的散列值機會完全不同,因為這個特性,哈希算法通常應用於對數據的完整性校驗以及密碼驗證。

常見的哈希算法有MD5、SHA1、SHA256、SHA512、NTLM等。

什麼是加密

加密算法是使用密碼對可讀的原始數據進行處理並得到不可讀密文的算法,跟哈希算法不同的是,加密算法是完全可逆的,只要提供密碼及密文就可以通過解密獲得明文。

加密算法又分成對稱加密算法及非對稱加密算法,二者主要的區別在於如何使用密鑰上,對稱加密算法使用同一個密碼進行加解密,常見的有DES、3DES、AES等,主要應用於體積較大的數據加密。

而非對稱加密算法使用公鑰及私鑰對進行加解密,使用公鑰加密的密文只能通過私鑰解密,反過來使用私鑰加密的密文則只能通過公鑰解密,非對稱加密的運算成本很高,因此一般只用於身份驗證及密碼交換,常見的算法有RSA、DSA、DH等。

以上是對編碼、哈希、對稱加密及非對稱加密等算法的簡單介紹,為什麼不能把這些算法都稱為加密算法呢?新手該如何區分這些算法?

首先可以從是否可逆上進行區分,編碼、對稱加密及非對稱加密算法都是可逆的,而哈希算法不可逆。

其次看是否使用了密碼,編碼及哈希算法不使用密碼,對稱加密使用一個密碼,而非對稱加密使用兩個密碼。

因此 ,判斷一個算法是否是加密算法要看它有沒有加解密機制,如果Base64是加密算法那它的密碼是什麼?如果MD5是加密算法那我們能通過密碼還原密文嗎?

所以,把數據轉化成Base64格式我們應該稱為Base64編碼,而使用MD5、SHA等算法獲取數據摘要值的過程我們應該稱為哈希而不是加密

對密碼破解技術感興趣的同學可以加關注,我後續將會持續更新這方面的內容,謝謝!

相關焦點

  • 通信安全基礎:哈希、對稱加密、非對稱加密、密鑰協商
    對稱加密對稱加密就是加解密的密鑰是一樣的,優點是快,這也是傳統的加密方式,像AES、3DES都是對稱加密。2. 非對稱加密非對稱加密用於加解密的密鑰不一樣,有2個密鑰,公鑰和私鑰,公鑰可以公開,私鑰妥善保管。RSA、ECC(橢圓曲線加密算法)、DH(密鑰交換算法)這些都是非對稱加密。
  • 聊聊對稱加密、非對稱加密、Hash算法
    對稱加密採用了對稱密碼編碼技術,它的特點是加密和解密使用相同的密鑰,用這個密鑰都能去加密或解密 。非對稱加密算法需要一對密鑰(兩個密鑰):公開密鑰(publickey)和私有密鑰(privatekey)(簡稱公鑰,私鑰)。公開密鑰與私有密鑰生成時是一對,用公鑰加密只能是對應的私鑰解密,同理用私鑰加密只能用對應的公鑰解密。
  • 深入淺出:區塊鏈技術中的非對稱加密算法--籤名和加密
    籤名是一種非對稱加密算法的用法,即使用不同的加密密鑰與解密密鑰,而由已知加密密鑰推導出解密密鑰在計算上是不可行的。籤名是用非對稱算法的私鑰籤名,然後用私鑰對應的公鑰來驗證籤名,的主要作用是確定發送方的身份。除了籤名,非對稱加密算法還有一個用處是加密和解密,加密則是用公鑰來對信息加密,然後用對應的私鑰進行解密,主要作用是向接收方傳遞加密的信息。籤名和加密的作用和算法都不相同,因此需要加以區別。
  • 深入淺出:區塊鏈技術中的非對稱加密算法——籤名和加密
    籤名是一種非對稱加密算法的用法,即使用不同的加密密鑰與解密密鑰,而由已知加密密鑰推導出解密密鑰在計算上是不可行的。籤名是用非對稱算法的私鑰籤名,然後用私鑰對應的公鑰來驗證籤名,的主要作用是確定發送方的身份。除了籤名,非對稱加密算法還有一個用處是加密和解密,加密則是用公鑰來對信息加密,然後用對應的私鑰進行解密,主要作用是向接收方傳遞加密的信息。
  • 深入淺出:區塊鏈技術中的非對稱加密算法--籤名和加密
    籤名是一種非對稱加密算法的用法,即使用不同的加密密鑰與解密密鑰,而由已知加密密鑰推導出解密密鑰在計算上是不可行的。籤名是用非對稱算法的私鑰籤名,然後用私鑰對應的公鑰來驗證籤名,的主要作用是確定發送方的身份。
  • 對稱加密與非對稱加密
    區塊鏈技術中,加密算法可以分為對稱加密與非對稱加密。主要是有解密的密鑰是否相同來區別。這兩種加密方式是屬於互補的關係,應用於不同需求的場合,有時候也可以組合使用,形成混合加密機制。OKEx大力支持區塊鏈技術,積極倡導用戶理性投資,切實保護投資者權益,因此交易量已經做到了全球第一。
  • 神奇的非對稱加密
    區塊鏈技術運用的密碼學算法主要為兩個部分:一是哈希算法,二是非對稱加密算法。 哈希算法在之前的文章《人人都能讀懂的比特幣挖礦原理》中有詳細的講解,感興趣的朋友可以查看之前的文章。 那什麼是非對稱加密呢? 了解一個事物,首先了解它的「敵人」——對稱加密。
  • 加密算法科普:des、aes加密、對稱、非對稱加密、Hash算法都是啥
    加密算法導讀加密一般分為對稱加密(Symmetric Key Encryption)和非對稱加密(Asymmetric Key Encryption)常見的對稱加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6 和 AES常見的非對稱加密算法:RSA、ECC (行動裝置用)、Diffie-Hellman、El Gamal、
  • 對稱加密和非對稱公鑰加密有什麼區別
    Asymmetric cryptography不對稱加密對稱密碼技術對稱密碼技術與凱撒密碼技術相同,用單個密鑰加密和解密數據。 為了更好地理解此過程,將此過程可視化為下圖我們在文件加密軟體中使用的是這種非對稱密碼技術。非對稱加密技術非對稱密碼技術進一步鞏固了數據加密的機制,解決了對稱密碼技術的弊端。
  • 水木清華校友基金袁曄:哈希算法和非對稱加密在區塊鏈的應用
    人閱讀 2018-03-16發布 來源:簡書 相關關鍵詞
  • 【基礎回顧】對稱、非對稱加密算法以及PKI的相關知識
    1、對稱加密算法(也叫私鑰加密)指加密和解密使用相同密鑰的加密算法,因此必須以絕對安全的形式傳送密鑰才能保證安全。其加密密鑰能夠從解密密鑰中推算出來,同時解密密鑰也可以從加密密鑰中推算出來。對稱算法的安全性依賴於密鑰,洩漏密鑰就意味著任何人都可以對他們發送或接收的消息解密,所以密鑰的保密性對通信的安全性至關重要。
  • 區塊鏈中的對稱加密與非對稱加密是什麼?
    其中一種安全的解決方案是對稱加密或非對稱加密。非對稱加密學使用兩個鍵——公鑰和私鑰,它們在數學上是相關的,並且在操作中具有特定的作用。用私鑰加密的數據只能用公鑰解密,反之亦然。不能使用同一密鑰加密和解密數據。私鑰必須保持私有,否則會危及整個系統的安全性。如果私鑰被破壞,則必須創建一對新密鑰。在保護信息方面,非對稱加密比對稱加密好得多。
  • 三分鐘了解對稱加密和非對稱加密是如何工作的?
    其中提到的數字籤名方案,無論是 RSA,還是 ECDSA 或 Schnorr 加密算法,都是非對稱加密算法。那麼什麼是非對稱加密?什麼又是對稱加密?非對稱加密和對稱加密,兩者的主要區別在於:對稱加密使用共享(單一)密鑰加密解密數據,而非對稱加密使用密鑰對解密數據。如下圖所示,兩把鑰匙不同。
  • 區塊鏈解讀:非對稱加密對醫療健康應用的意義
    在區塊鏈的分布式網絡裡,節點之間進行通訊並達成信任,需要依賴數字籤名技術,通過數字籤名實現身份的確認以及信息的真實性、完整性驗證。  所以,數字籤名的作用有二,一是確定消息是由發送方籤名並發出來的,二是確認消息的完整性。  而數字籤名的過程就涉及到哈希算法、非對稱加密等加密技術,這些加密技術是區塊鏈實現信任的基礎。
  • SSL證書(https)中的非對稱加密與對稱加密
    對稱加密(Symmetric Cryptography),又稱私鑰加密對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的密鑰(secret key),這種方法在密碼學中叫做對稱加密算法。對稱加密有很多種算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。
  • MSSQL加密解密函數(對稱非對稱加密解密、籤名驗證、密鑰處理)
    在SQL Server 早些版本中如果希望加密敏感數據,如個人信息、登錄密碼等,必須藉助外部應用程式或算法。SQL Server 2005開始引入內建數據加密的能力,使用證書、密鑰和系統函數的組合來完成。對稱加密和解密採用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
  • 區塊鏈關鍵詞解讀:非對稱加密對醫療健康應用的意義
    而數字籤名的過程就涉及到哈希算法、非對稱加密等加密技術,這些加密技術是區塊鏈實現信任的基礎。 哈希算法 區塊鏈的數字籤名在加密時所涉及的兩個核心內容,分別是哈希算法和非對稱加密。 哈希(HASH)算法,通常也叫做散列函數。
  • 由https引起的對稱加密與非對稱加密分析
    加密算法分為對稱加密和非對稱加密,現在被百度全面支持的HTTPS,使用的是非對稱加密。雖然網站HTTPS化是被公認的防止被劫持的有利手段,而且百度站長平臺已經全面支持HTTPS站點,且提出HTTPS的網頁具有排名優待,但是我相信還是有很多小夥伴連對稱加密與非對稱加密都沒搞明白。
  • 區塊鏈中兩個最重要的數據加密安全技術,非對稱加密、哈希計算
    在區塊鏈中應用了兩個最重要的數據加密安全技術,一個是非對稱加密技術,一個是哈希計算。對稱加密只有一個密碼,加密解密的密碼完全相同,因而當我們使用了一個密碼加密數據後,把數據傳送給接收方,要使接收方能使用數據,則必須同時將加密密碼傳送給接收方。加密密碼很容易在傳輸途中被竊取,從而使加密失效,因此對稱密鑰不適用通信環境。
  • 對稱加密算法的優缺點
    對稱算法使用一個密鑰,給定一個明文和一個密鑰,加密產生密文,其長度和明文大致相同,解密時,使用讀密鑰與加密密鑰相同。常見的對稱加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。