【每天推薦一篇文章】編碼、加密、雜湊
今天在群組剛好看有人在討論加密跟雜湊,馬上把收藏已久的這篇拿出來:
一次搞懂密碼學中的三兄弟 — Encode、Encrypt 跟 Hash - Starbugs Weekly 星巴哥技術專欄
這篇文章依序介紹編碼、加密和雜湊,並且都有給範例和應用,很適合剛認識的朋友。(也可以拿去丟給每次都講錯的朋友)
那按照慣例,我們也迅速筆記一下,讓我收到卡片庫裡:
首先是編碼。編碼其實就是換個方式表達資料而已。
例如跟朋友約好 ㄅ=A, ㄆ=B… 這樣轉換下去,基本上只要知道對應的內容就可以馬上轉回來,摩斯密碼就是這類。
(題外話,以前還在紙條上用過豬圈密碼 xD)
延伸閱讀:為什麼打開檔案時會看到亂碼?跟著小明一起從傳紙條學習編碼
接著認識一下二哥:加密。
加密不只是像編碼一樣單純轉換而已,而是需要使用金鑰。
例如 ㄅ=A, ㄆ=B 之後,這時候我們約好 key=2,代表字母要往下數幾格,這時候就變成 ㄅ=C, ㄆ=D,如果不知道 key=2 就可能會數錯了
當然現在用的加密還是比較正經一點,被暴力解都要跑超久那種的。此外,根據加解密是不是用同一把 Key,還會分對稱式跟非對稱式
有興趣的朋友可以閱讀內文,以及延伸閱讀:
最後是雜湊,雜湊沒在跟你還不還原的,直接就是打爛。
把各個欄位/字元 丟進去某個公式計算的方式就叫做雜湊(Hash),而這個計算公式就稱為雜湊函數(Hash function),過程可能會做各種加減乘除,最後算出一個值或字串。
因為最後一個數字是經由前幾個數字計算、濃縮出來的,所以理所當然不可能由雜湊後的結果回推出前幾個數字分別是什麼,所以雜湊的過程是不可逆的
這邊想貼另一篇的說明,也非常好懂:
舉例來說,雜湊函數就像一台果汁機,我們把蘋果香蕉你個芭樂 (資料) 都丟進去打一打、攪一攪,全部變得爛爛的很噁心對吧?!這時候出來的產物 (經過雜湊函數後的值),是獨一無二的,沒有辦法反向組合成原來的水果 (資料)。倘若我們把蘋果改成紅龍果,出來的產物 (經過雜湊函數後的值) 就會跟著改變,變成桃紅色的,不再是原來的淡黃色。
我個人通常是在存密碼的時候碰到,反正就算要比對的話,只要照同樣步驟打爛兩次結果長的一樣就好了吧~
最後引用一下這篇文章簡潔有力的小結,結束這一回合:
- 編碼(Encoding)
- 只是換個方式表達資料
- 不需要 Key 即可解碼(不安全)
- 加密(Encrypt)
- 用 Key 來保護資料的機密性
- 加密跟解密都需要 Key
- 雜湊(Hashing)
- 把資料丟進一串公式計算出一個結果
- 無法反推回原字串
那麼,今天的轉貼就到這邊,明天見~
打爐石打到超時 XD,新模式也太好玩
其他文章
哈囉,如果你也有 LikeCoin,也覺得我的文章有幫上忙的話,還請不吝給我拍拍手呦,謝謝~ ;)