編碼和加密的區別
IT術語中有編碼和加密這兩個詞語,行業內人士基本都知道編碼和加密是兩個概念,但業餘愛好者卻有時候將這兩個概念等同化,下面小編跟你講講。
一、編碼與解碼的本質區別
編碼絕對不是加密。加密是可以算是一種編碼的操作。
說通俗一點,在於編碼是通常希望別人解碼的。 而加密是不希望的。
編碼更多的是為了轉換格式,加密是為了安全。
解碼,是編碼的逆過程。解密,是加密的逆過程。
二、加密概述
加密,是以某種特殊的演算法改變原有的資訊資料,使得未授權的使用者即使獲得了已加密的資訊,但因不知解密的方法,仍然無法瞭解資訊的內容。 在航空學中,指利用航空攝影像片上已知的少數控制點,通過對像片測量和計算的方法在像對或整條航攝帶上增加控制點的作業。
三、密碼學中加密的安全性
加密之所以安全,絕非因不知道加密解密演算法方法,而是加密的金鑰是絕對的隱藏,現在流行的RSA和AES加密演算法都是完全公開的,一方取得已加密的資料,就算知道加密演算法也好,若沒有加密的金鑰,也不能開啟被加密保護的資訊。單單隱蔽加密演算法以保護資訊,在學界和業界已有相當討論,一般認為是不夠安全的。公開的加密演算法是給黑客和加密家長年累月攻擊測試,對比隱蔽的加密演算法要安全得多。
在密碼學中,加密是將明文資訊隱匿起來,使之在缺少特殊資訊時不可讀。雖然加密作為通訊保密的手段已經存在了幾個世紀,但是,只有那些對安全要求特別高的組織和個人才會使用它。在20世紀70年代中期,強加密***Strong Encryption*** 的使用開始從政府保密機構延伸至公共領域, 並且目 前已經成為保護許多廣泛使用系統的方法,比如因特網電子商務、手機網路和銀行自動取款機等。
加密可以用於保證安全性, 但是其它一些技術在保障通訊安全方面仍然是必須的,尤其是關於資料完整性和資訊驗證;例如,資訊驗證碼***MAC***或者數字簽名。另一方面的考慮是為了應付流量分析。
四、編碼的字元種類
字元編碼是一套法則,使用該法則能夠對自然語言的字元的一個集合***如字母表或音節表***,與其他東西的一個集合***如號碼或電脈衝***進行配對。
1.文字編碼
文字編碼***Text encoding***使用一種標記語言來標記一篇文字的結構和其他特徵,以方便計算機進行處理。
2.語義編碼
語義編碼***Semantics encoding***,以正式語言乙對正式語言甲進行語義編碼,即是使用語言乙表達語言甲所有的詞彙***如程式或說明***的一種方法。
3.電子編碼
電子編碼***Electronic encoding***是將一個訊號轉換成為一個程式碼,這種程式碼是被優化過的以利於傳輸或儲存。轉換工作通常由一個編解碼器完成。
4.神經編碼
神經編碼***Neural encoding***是指資訊在神經元中被如何描繪的方法。
5.記憶編碼
記憶編碼***Memory encoding***是把感覺轉換成記憶的過程。
6.加密
加密***Encryption***是為了保密而對資訊進行轉換的過程。
7.譯碼
譯碼***Transcoding***是將編碼從一種格式轉換到另一種格式的過程。
小編推薦:加密技巧
1.不要使用老的加密演算法
企業應當停止使用DES等老的加密演算法,也不要使用其親戚3DES***三重資料加密標準***。
2.使用企業支援的最長的加密金鑰
建議企業儘可能使用最大長度的金鑰,這可以使那些無法訪問後門的企業難以破解企業的加密。當今,AES 128可謂強健,但如果可能,不妨使用AES 512 或更長的金鑰。
3.多層加密
建議企業儘可能地利用多層加密,這可以增加攻擊者的困難。如果有可能,不妨對資料庫的每個欄位、每個表以及整個資料庫都進行加密。
4.安全儲存加密金鑰
企業面臨的最大問題可能並不是加密演算法被美國的國安局留下後門,而是密碼本身僅僅是加密方案的一部分。對於基礎架構的其它要素,如金鑰管理系統,企業也必須保證其安全。攻擊者都願意對付安全系統的最薄弱環節。如果攻擊者很容易就可以竊取金鑰,為什麼還會費力破解加密演算法呢?
有的企業將保護其資料的金鑰給第三方,尤其是在企業將資料儲存在公共雲中並由雲供應商加密和保護時。這裡的問題是,企業無法控制金鑰,而是必須相信雲供應商的僱員會安全地儲存金鑰。
如果企業可以實施一種可以將金鑰控制在雲中的加密系統,就會安全得多。自動處理加密的雲加密閘道器可以幫助公司實現這種安全。
5.確保正確實施加密
事實上,實施加密系統並非易事,因為它有許多動態部件,任何一個部件都有可能成為一個薄弱環節。你必須進行大量調查,確保正確實施加密。
在實施加密過程中,哪些方面容易出錯?除了金鑰容易遭受攻擊,還有CBC***密碼分組連結***的實施方式。使用CBC,可以用同樣長度的隨機文字塊***也稱為初始化向量***對純文字進行異或運算,然後對其進行加密,產生一個加密文字塊。然後,將前面產生的密文塊作為一個初始化向量對下一個純文字塊進行異或運算。
CBC的正確實施要求在開始每個過程時都有一個新的初始化向量。一個常見的錯誤是用一個不加改變的靜態初始化向量來實施CBC。如果正確實施了CBC,那麼,如果我們在兩個不同的場合加密了文字塊,所生產的密文塊就不會相同。
6.不要忽視外部因素
公司幾乎無法控制的外部因素有可能破壞加密系統的安全性。例如,SSL依賴於數字證書,而且這些因素依賴於嵌入在瀏覽器***如IE、火狐、Chrome等***中的根證書頒發機構的完整性。但是,我們如何知道其是否可信,或者這些證書頒發機構不是某外國情報機構的幌子?你是否覺得這聽起來牽強附會,但卻有可能是事實。
此外,DNS也是不得不重視的弱點。只要DNS被攻克,攻擊者就可以使用釣魚技術繞過加密。
當然,這裡強調的是加密問題的各種可能性。一個正確實施的加密系統只能在一種情況下被攻克,即測中金鑰,在短時間內猜對金鑰並非不可能,但其可能性微乎其微。