密碼學和Base64

密碼學基本概念:未加密的報文,原文;加密後的報文,密文

1.古典密碼學:包括移位密碼、代換密碼、仿射密碼等

移位密碼,代換密碼,仿射密碼也被統稱爲單表代換密碼:

一旦密鑰選定,原文和密文是一一對應的關係;

維吉尼亞密碼,希爾密碼也被統稱爲多表代換密碼。

2.近代密碼學:

數據加密標準(Data Encryption Standard,DES),公開鑰匙系統,RSA。

1978年RSA公鑰密碼體制的出現,成爲公鑰密碼的傑出代表

密碼學學科總結:

密碼學是研究數據的加密、解密及其變換的學科,涵蓋數學、計算機科學、電子與通信學科。密碼技術不僅服務於信息的加密和解密,還是身份認證訪問控制數字簽名等多種安全機制的基礎。

密碼技術包括密碼算法設計密碼分析安全協議身份認證消息確認數字簽名密鑰管理密鑰託管等技術,是保護大型網絡傳輸信息安全的唯一實現手段,是保障信息安全的核心技術。它以很小的代價,對信息提供一種強有力的安全保護。

3.現代密碼算法:

 密鑰與算法分開;密鑰算法可以公開,密鑰不公開; 密碼系統的安全性取決於密鑰的保密性

4密碼技術的主要用途:

數據保密;認證技術;信息技術的完整性;抗抵賴。

5.密碼算法的安全性:

如果破譯算法的代價大於加密數據本身的價值,或者在信息的生命期內無法破解,那麼你的算法可能是安全的;如果一個算法用可得到的資源不能破解,那麼這個算法被稱爲是計算上安全的。(處理複雜性:計算量,CPU時間;數據複雜性:所需輸入數據量;存儲複雜性:計算所需的存儲空間)

6.Base64

由來:

Email只被允許傳送ASCII字符,即一個8位字節的低7位。因此,如果您發送了一封帶有非ASCII字符(即字節的最高位是1)的Email通過有“歷史問題”的網關時就可能會出現問題!

組成:

(1)將每三個字節作爲一組,一共是24個二進制位。

(2)將這24個二進制位分爲四組,每個組有6個二進制位

(3)在每組前面加兩個00,擴展成32個二進制位,即四個字節。

(4)根據映射表,得到擴展後的每個字節的對應符號,得到Base64的編碼值。

(5)填充

Base64並不是加密算法,違反了加密算法公開密鑰不公開原則

7.一段字符被Base64編碼之後,長度增加了還是減少了,增長或減少了多少?

答;增加,大約增加了1/3。Base64將3個字節轉變爲4個字節,因此,編碼後的代碼量約比編碼前的代碼量多了1/3。之所以說是“約”,是因爲如果代碼量正好是3的整數倍,那麼自然是多了1/3。

(1)如果beforeEncode.length()是3的整數倍,那麼長度爲 (beforeEncode.length()/3)*4
(2)如果beforeEncode.length()不是3的整數倍,那麼長度(beforeEncode.length()/3+1)*4

Base64是網絡上最常見的用於傳輸8Bit字節代碼的編碼方式之一,Base64加密方式是將原文經過簡單的字符轉換,轉換成不容易被肉眼看出的字符編碼,Base64加密常用在HTTP環境下傳遞較長的標識信息確保不破壞HTTP的請求格式。

Base64的加密原理是將3個8位二進制轉換爲4個6位二進制,不足6位時高位補0 ,以確保其值爲64個可能,這就是Base64來源。

大等號一定用作後綴,且數目一定是0個、1個或2個。這是因爲如果原文長度不能被3整除,base64要在後面添加\0湊齊3n位。爲了正確還原,添加了幾個\0就加上幾個等號。顯然添加等號的數目只能是0、1或2;嚴格來說base64不能算是一種加密,只能說是編碼轉換。使用base64的初衷。是爲了方便把含有不可見字符串的信息用可見字符串表示出來,以便複製粘貼(字符‘0’:char c=‘0’;它的ASCII碼實際上是48。內存中存放表示:00110000

字符‘\0’:ASCII碼爲0,表示一個字符串結束的標誌。這是轉義字符。

整數0:ASCII,碼爲0,字符表示爲空字符,NULL;數值表示爲0;內存中表示爲00000000

總結:一般情況下,一個合法的Base64,有着以下特徵:

(1)字符串的長度爲4的整數倍。

(2)字符串的符號取值只能在A-Z, a-z, 0-9, +, /, =共計65個字符中,且=如果出現就必須在結尾出現。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章