在java開發中,常常需要考慮數據安全問題,然不僅僅需要考慮數據存儲的安全,還需要考慮數據的傳輸安全。自從有了數據安全問題后,密碼學也就出來了。了解數據安全,首先需要了解密碼學
1.什么是密碼學
密碼學是研究編制密碼和破譯密碼的技術科學。研究密碼變化的客觀規律,應用於編制密碼以保守通信秘密的,稱為編碼學;應用於破譯密碼以獲取通信情報的,稱為破譯學,總稱密碼學。
2.密碼學中常用的概念
明文:指待加密信息。明文可以是2進制數據,文本文件,圖片文件等。
密文:指經過加密后的明文。密文可以使2進制數據,文本文件,圖片文件等。
發送者:發送消息的人。
接收者:接收消息的人。
加密:明文轉換為密文的過程。
加密算法:將明文變化為密文的轉換算法。
加密密匙:通過加密算法進行加密操作作用的密匙。
解密:將密文轉換為明文的過程。
解密算法:將密文轉換為明文的轉換算法。
解密密匙:通過解密算法進行解密操作用的密匙。
密碼分析:截取密文者試圖通過分析截獲的密文從而推斷出原密文或密匙的過程。
密碼分析者:等同於密碼破譯者,指從事密碼分析的人。
被動攻擊:指對一個保密系統采取截獲密文並對其進行分析和攻擊。這種攻擊對密文沒有破壞作用。
主動攻擊:指攻擊者非法入侵密碼系統,采用偽造,修改,刪除等手段向系統注入假消息進行欺騙。這種攻擊對密文具有破壞作用。
密碼體制:由明文空間、密文空間、密匙空間、加密算法和解密算法五部分構成。
密碼協議:有時候也稱為安全協議,是指以密碼學為基礎的消息交換的通信協議,其目的是在網絡環境中提供各種安全服務。
密碼系統:用於加密與解密的系統,通常包含軟、硬件的系統。
柯克霍夫原則:數據的安全基於密匙而不是算法的保密。
3.密碼學的分類
1.按時間划分,可分為古典密碼與現代密碼,古典密碼為以字符為基本單元進行加密
2.按保密內容划分,可分為受限制算法與基於密匙算法
3.按密碼體制划分,可分為對稱密碼體制、非對稱密碼體制
4.按明文處理方法划分,可分為分組密碼與流密碼
4.保密通信模型
密碼學並不是孤立存在,廢話,呵呵。它需要一個環境,就是保密通信模型。密碼學的目的在於確保信息的保密傳送。
保密通信模型:
對稱密碼體制模型:
從中可以看出加密與解密的密匙是一模一樣的,也就是對稱密碼體制加解密算法密匙是一樣的。
非對稱密碼體制:
與對稱密碼體制比較就是加解密算法與密匙均不同。