1. 程式人生 > 實用技巧 >密碼學系列——簡介密碼學

密碼學系列——簡介密碼學

前言

整理密碼學。

我們在程式設計中常常需要密碼問題,比如說https,aes等。他們都用到了密碼這個概念。

密碼學是網路安全、資訊保安、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、雜湊函式等,都屬於密碼學範疇。

正文

從古至今密碼學一直存在,那麼在古代密碼是怎麼樣的呢?

我們常常在電視劇中看到一張紙舔一舔然後顯示出字了,或者用火然後烤一烤然後出現一些圖案。

這些也屬於密碼學。當然這樣是不夠的,古人的思想不止於此,他們通過其他方法把文字加密了。

① 替換法
替換法很好理解,就是用固定的資訊將原文替換成無法直接閱讀的密文資訊。例如將 b 替換成 w ,e 替換成p ,這樣bee 單詞就變換成了wpp,不知道替換規則的人就無法閱讀出原文的含義。

替換法有單表替換和多表替換兩種形式。單表替換即只有一張原文密文對照表單,傳送者和接收者用這張表單來加密解密。在上述例子中,表單即為:a b c d e - s w t r p 。

多表替換即有多張原文密文對照表單,不同字母可以用不同表單的內容替換。

例如約定好表單為:表單 1:abcde-swtrp 、表單2:abcde-chfhk 、表單 3:abcde-jftou。

當然這會使得設計變得困難。

② 移位法
移位法就是將原文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後得出密文,典型的移位法應用有 “ 愷撒密碼 ”。
例如約定好向後移動2位(abcde - cdefg),這樣 bee 單詞就變換成了dgg 。

上面的稱作古典密碼學。

本來古典密碼學好好的,然後概率論發生了,這個時候密碼就變得非常容易破解。

百度百科講解一下如何破解的。

頻率分析基於如下原理:在任何一種書面語言中,不同的字母或字母組合出現的頻率各不相同。
而且,對於以這種語言書寫的任意一段文字,都具有大致相同的特徵字母分佈。
比如,在英語中,字母E出現的頻率很高,而X則出現得較少。類似地,ST、NG、TH,以及QU等雙字母組合出現的頻率非常高,NZ、QJ組合則極少。英語中出現頻率最高的12個字母可以簡記為“ETAOIN SHRDLU”。

比如說採用替換法,我發現出現很多個Z。但是按理說E應該最多,那麼我嘗試把Z換成X,這樣破解的概率大大增加。

那麼現代密碼加密方式是啥?

① 雜湊函式
雜湊函式,也見雜湊函式、摘要函式或雜湊函式,可將任意長度的訊息經過運算,變成固定長度數值,常見的有MD5、SHA-1、SHA256,多應用在檔案校驗,數字簽名中。
MD5 可以將任意長度的原文生成一個128位(16位元組)的雜湊值
SHA-1可以將任意長度的原文生成一個160位(20位元組)的雜湊值

② 對稱密碼
對稱密碼應用了相同的加密金鑰和解密金鑰。對稱密碼分為:序列密碼(流密碼),分組密碼(塊密碼)兩種。流密碼是對資訊流中的每一個元素(一個字母或一個位元)作為基本的處理單元進行加密,塊密碼是先對資訊流分塊,再對每一塊分別加密。

③ 非對稱密碼
對稱密碼的金鑰安全極其重要,加密者和解密者需要提前協商金鑰,並各自確保金鑰的安全性,一但金鑰洩露,即使演算法是安全的也無法保障原文資訊的私密性。

雜湊函式和非對稱密碼一般用於檔案校驗和身份驗證,而對稱用於資料傳輸加密。

主要是因為非對稱密碼加密解密消耗時間。