<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Encode on Ricky</title><link>https://linzeyan.github.io/zh-tw/categories/encode/</link><description>Recent content in Encode on Ricky</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><lastBuildDate>Mon, 18 Oct 2021 14:24:01 +0800</lastBuildDate><atom:link href="https://linzeyan.github.io/zh-tw/categories/encode/index.xml" rel="self" type="application/rss+xml"/><item><title>一次搞懂密碼學中的三兄弟 — Encode、Encrypt 跟 Hash</title><link>https://linzeyan.github.io/zh-tw/posts/2021/20211018-what-are-encoding-encrypt-and-hashing/</link><pubDate>Mon, 18 Oct 2021 14:24:01 +0800</pubDate><guid>https://linzeyan.github.io/zh-tw/posts/2021/20211018-what-are-encoding-encrypt-and-hashing/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://medium.com/starbugs/what-are-encoding-encrypt-and-hashing-4b03d40e7b0c" target="_blank" rel="noopener">一次搞懂密碼學中的三兄弟 — Encode、Encrypt 跟 Hash&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="編碼encoding">編碼（Encoding）&lt;/h3>
&lt;blockquote>
&lt;p>不會修改資料、也沒有任何加密的效果，單純就是 換個方式來表達資料 而已，其中最有名的例子就是&lt;code>摩斯密碼&lt;/code>&lt;/p>
&lt;ul>
&lt;li>JavaScript 中有兩個很實用的 function 分別是 &lt;code>encodeURI&lt;/code> 跟 &lt;code>decodeURI&lt;/code> 把網址中的特殊字元（空白、標點符號等等）編碼成符合 URL 的格式&lt;/li>
&lt;li>&lt;code>Base64&lt;/code> 是一種可以把二進位的資料編碼成 ASCII 字元的方法&lt;/li>
&lt;li>&lt;code>霍夫曼編碼（Huffman Coding）&lt;/code> 一種用來進行 無失真壓縮 的編碼演算法，說穿了他的概念就是把常用的字記成縮寫，從而降低資料量、達到壓縮的效果&lt;/li>
&lt;/ul>&lt;/blockquote>
&lt;h3 id="加密encrypt">加密（Encrypt）&lt;/h3>
&lt;blockquote>
&lt;p>加密跟解密必須要有金鑰（Key）才能進行。以最簡單的 凱薩加密法 來說，他加密的方式就是把每個英文字母加上一個 偏移量，這個偏移量就是用來執行加解密的 Key&lt;/p>
&lt;ul>
&lt;li>AES (Advanced Encryption Standard) 是一種對稱加密演算法，所謂的對稱就是說加密解密 都是用同一個 key，這點跟上面說到的凱薩加密法一樣，但 AES 不像凱薩的 key 只有 0-25 這麼少種，而是可以有超過 10³⁸ 種&lt;/li>
&lt;li>RSA 這類非對稱加密法有個很特別的地方，就是他會產生一組兩個 Key 分別叫公鑰（Public Key）跟私鑰（Private Key），而且 用公鑰加密的內容只能用私鑰解&lt;/li>
&lt;/ul>&lt;/blockquote>
&lt;h3 id="雜湊hashing">雜湊（Hashing）&lt;/h3>
&lt;blockquote>
&lt;p>各個 欄位/字元 丟進去某個公式計算的方式就叫做雜湊（Hash），而這個計算公式就稱為 雜湊函數（Hash function），過程可能會做各種加減乘除，最後算出一個值或字串，因為不可能由雜湊後的結果回推，所以雜湊的過程是 不可逆的&lt;/p>&lt;/blockquote></description></item></channel></rss>