# [資安實務] 編碼與密碼學 ### 編碼?加密?雜湊? 編碼只是將文字以其他的形式表現,可直接解碼。 加密類似編碼,不過需要透過金鑰(key)才可在密文與原文間轉換。 雜湊是透過公式計算出一個值或字串,無法用得到的字串回推原文。 ## 編碼與解碼 ### 數字系統 #### 十進位 世界上應用最廣泛的進位制,以10為底,阿拉伯數字也是十進位。 #### 二進位 以2為底的進位制,現代的電腦都使用二進制。 每個數字稱為一個位元(bit)。 #### 十六進位 以16為底的進位制,主要用於表示電腦記憶體位址。 #### 八進位 以8為底的進位制。linux檔案權限(chmod)即是以八進位表示。 ### ASCII 將英文字母、數字、符號等字元轉為數字編碼,共有128個ASCII碼如下表: ![](https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Ascii_Table-nocolor.svg/1280px-Ascii_Table-nocolor.svg.png) ##### [解碼方法] * 使用線上解碼器 * [Python解碼](https://hackmd.io/@hyu/ryLkaDOHF#ASCII) ##### [如何分辨ASCII與八進位?] 1. 八進位通常為三位數,若有二位數前面也會多一個0。 2. ASCII編碼不會超過127。 ### Base64 存放64個可印字元來表示二進位。電子郵件使用的編碼。 ### 摩斯電碼 訊號代碼,由'.'、'-'兩種符號組成,透過不同排序來發送訊息。 ![](https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/International_Morse_Code.svg/390px-International_Morse_Code.svg.png) ##### [解碼方法] * 使用線上解碼器 * [Python解碼](https://hackmd.io/@hyu/ryLkaDOHF#%E6%91%A9%E6%96%AF%E9%9B%BB%E7%A2%BC) ## 加密與解密 ### 古典密碼 #### 凱撒密碼(Caesar cipher) 採用字母平移進行加密 ![](https://i.imgur.com/cYPmHkx.png) #### 仿射密碼(Affine cipher) 透過函數e(x) = (ax + b) mod m進行加密 #### 維吉尼亞密碼(Vigenère cipher) 使用多個凱撒密碼組成密碼字母表進行加密,圖為加密表: ![](https://i.imgur.com/fhbjxUT.png) ### 現代密碼 於電腦出現後創造,更複雜的加密方法。 ## [RSA](https://hackmd.io/@hyu/BycDP_eAj) ###### tags: `資安`