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

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

「我的數據經過了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等算法獲取數據摘要值的過程我們應該稱為哈希而不是加密

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

相關焦點

  • 聊聊對稱加密、非對稱加密、Hash算法
    對稱加密採用了對稱密碼編碼技術,它的特點是加密和解密使用相同的密鑰,用這個密鑰都能去加密或解密 。非對稱加密算法需要一對密鑰(兩個密鑰):公開密鑰(publickey)和私有密鑰(privatekey)(簡稱公鑰,私鑰)。公開密鑰與私有密鑰生成時是一對,用公鑰加密只能是對應的私鑰解密,同理用私鑰加密只能用對應的公鑰解密。
  • 常見三種加密:MD5、非對稱加密,對稱加密
    一、哈希HASH1.MD5加密MD5加密的特點:不可逆運算對不同的數據加密的結果是定長的32位字符(不管文件多大都一樣
  • AITD小課堂第十二課:哈希算法是什麼?非對稱加密是什麼?
    哈希算法是什麼? 區塊鏈的四大核心技術分別是密碼學、分布式帳本、共識機制以及智能合約。而密碼學作為其中最重要的一部分,可以說是區塊鏈的基石,而其他技術是以密碼學為地基,才能搭建出區塊鏈這座高樓大廈。
  • 加密算法科普: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不對稱加密對稱密碼技術對稱密碼技術與凱撒密碼技術相同,用單個密鑰加密和解密數據。 為了更好地理解此過程,將此過程可視化為下圖我們在文件加密軟體中使用的是這種非對稱密碼技術。非對稱加密技術非對稱密碼技術進一步鞏固了數據加密的機制,解決了對稱密碼技術的弊端。
  • 三分鐘了解對稱加密和非對稱加密是如何工作的?
    其中提到的數字籤名方案,無論是 RSA,還是 ECDSA 或 Schnorr 加密算法,都是非對稱加密算法。那麼什麼是非對稱加密?什麼又是對稱加密?非對稱加密和對稱加密,兩者的主要區別在於:對稱加密使用共享(單一)密鑰加密解密數據,而非對稱加密使用密鑰對解密數據。如下圖所示,兩把鑰匙不同。
  • 什麼是非對稱加密?
    豪華陣容的背後只有一個目的,就是使用強大的加密算法來保護個人信息和隱私免受攻擊。而非對稱加密算法也是比特幣存在的重要基石,中本聰在密碼學基礎之上用代碼創造了比特幣,將非對稱加密推向了一個嶄新的高潮。了解非對稱加密之前,我們先要理解什麼是對稱加密?
  • 加密類型:5種加密算法以及如何選擇正確的算法
    在本文中,我們將學習對稱和非對稱加密及其用於加密數據的流行加密算法。讓我們對其進行哈希處理。加密類型1:對稱加密顧名思義,對稱加密方法使用單個加密密鑰來加密和解密數據。對這兩個操作使用單個鍵使其成為一個簡單的過程,因此稱為「對稱」。
  • 現代密碼學核心——非對稱加密
    非對稱加密算法以及基於它構建的公鑰基礎設施體系(Public Key Infrastructure,簡稱PKI)已經是現代密碼學的主體內容,也基本佔據了信息安全學科的半壁江山。之前已經討論過,雖然對稱加密算法已經很牛了,但如何在不安全的網絡上傳輸對稱密鑰是個致命問題。這時候,又得數學家出來解決問題了(所以說,密碼學家首先都是數學家)。
  • 由MDUKEY 加密方式引申開:關於區塊鏈中常見的非對稱加密算法
    作為最優先級的事項,MDUKEY 存儲服務使用代理重加密、多層加密(應用層、網關層、文件系統層)等技術保護用戶隱私數據,並對用戶數據數據進行最小拆分,分布式存儲,減少數據大面積洩露 的風險,同時保證服務的高可用性。   而在數據安全的基礎上,MDUKEY 使用對稱加密與非對稱加密技術結合的加密方式,以及專業的加解密硬體,提高加解密的速率,保證服務的高吞吐量。
  • 非對稱加密的逆應用——數字籤名
    前面講過,非對稱加解密中是用信息接收者的公鑰加密,私鑰解密;而數字籤名則是用信息發送者(籤名者)的私鑰加密,公鑰解密(不要忘了,在非對稱加解密的世界裡,每個人都有一對屬於自己的公私鑰),所以它實際是非對稱加解密過程的逆運算。
  • PHP的OpenSSL加密擴展學習(二):非對稱加密
    PHP的OpenSSL加密擴展學習(二):非對稱加密上篇文章,我們了解了關於對稱和非對稱加密的一些相關的理論知識,也學習了使用 OpenSSL 來進行對稱加密的操作。今天,我們就更進一步,學習 OpenSSL 中的非對稱加密是如何實現的。
  • 常見的幾種加密算法比較
    原始數據(也稱為明文,plaintext)被加密設備(硬體或軟體)和密鑰加密而產生的經過編碼的數據稱為密文(ciphertext)。將密文還原為原始明文的過程稱為解密,它是加密的反向處理,但解密者必須利用相同類型的加密設備和密鑰對密文進行解密。
  • DES、RC4、AES等加密算法優勢及應用
    程式設計師捍衛自己珍貴的代碼,全靠花式的加密算法。代碼加密有多重要?程式設計師半年做出的產品,盜版者可能半天就能完全破解。  加密算法的本質,首先是為了對數據進行保密並防止篡改,其次更具有了身份驗證的功能。像是你跟女友約定好的話術,這句話一說出來,她就知道是什麼意思,並且知道說話的人是你,但任何其他人根本不知道你們在說什麼。  根據密鑰類型的不同,加密算法分為對稱和非對稱兩種。
  • 物聯網安全基礎知識:加密技術的使用
    對稱密鑰加密法通常用於確保機密性。常見的對稱加密算法包括: Triple DES(一種數據加密標準),又稱為 3DES,或由美國國家標準與技術研究院 (NIST) 正式命名的三重數據加密算法 (TDEA)。 高級加密標準 (AES)[2] 算法,例如使用 256 位密鑰的 AES-256。
  • 五一科普之:常用加密算法一覽!
    不是嚇唬大家,信息是透明的兄die,不過也要儘量去維護個人的隱私吧,今天學習對稱加密和非對稱加密。大家先讀讀這個字"鑰",是讀"yao",還是讀"yue"。看下圖一 、對稱加密對稱加密,顧名思義,加密方與解密方使用同一鑰匙(密鑰)。
  • 從數學到物理學:加密算法簡介
    在第二次世界大戰期間,美國海軍從納瓦霍人(Navajo)中招募並訓練了許多熟練使用納瓦霍語的人。從編碼消息的角度來看,這是個絕妙的辦法,因為很少有納瓦霍人以外的人學過怎麼說這種語言,而且當時還沒有用納瓦霍語出版的書。但是除了詞語之外,納瓦霍人的口語並不是十分複雜(按密碼設計學的標準來看),一個母語為納瓦霍語的人再加上一個訓練有素的密碼學家,合作起來完全可以破解這套密碼。
  • 面試官:說一下你常用的加密算法
    本文公眾號來源:Java旅途加密算法我們整體可以分為:可逆加密和不可逆加密,可逆加密又可以分為:對稱加密和非對稱加密。一、不可逆加密常見的不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我們可以統稱為SHA2加密算法,SHA加密算法的安全性要比MD5更高,而SHA2加密算法比SHA1的要高。
  • 談談區塊鏈的加密技術(公鑰、私鑰)
    加密技術有兩種加密類型:1.對稱加密(Symmetric cryptography)對稱加密算法是應用較早的加密算法,在對稱加密算法中,數據發送者和接收者使用同一套規則來對數據進行加密和解密。比如我們在加密用戶的信息時,不可能所有用戶都用同一個密鑰加密解密吧,這樣的話,一旦密鑰洩漏,就相當於洩露了所有用戶的信息,因此需要為每一個用戶單獨的生成一個密鑰並且管理,這樣密鑰管理的代價也會非常大。常用算法:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES。
  • 常見加密算法DES、AES和RSA的原理和特點
    本文轉載自【微信公眾號:strongerHuang,ID:strongerHuang】經微信公眾號授權轉載,如需轉載與原文作者聯繫主要總結下常用的對稱性加密算法DES和AES,非對稱性加密算法RSA。3.DES加密原理DES 使用一個 56 位的密鑰以及附加的 8 位奇偶校驗位,產生最大 64 位的分組大小。這是一個迭代的分組密碼,使用稱為 Feistel 的技術,其中將加密的文本塊分成兩半。使用子密鑰對其中一半應用循環功能,然後將輸出與另一半進行「異或」運算;接著交換這兩半,這一過程會繼續下去,但最後一個循環不交換。