## 📌 核心知識
* **ROT13 特性**:ROT13 是一種對稱的字母替換加密(位移 13 位)。因為英文字母共 26 個,進行第二次 ROT13 處理即可還原成原本的內容。
* **指令缺失原因**:macOS / Linux 預設未提供名為 `rot13` 的獨立指令,需透過內建的 `tr` 工具來實現字元位移。
## 🔸 類似概念
* **Base64**:用於將二進位資料(如 ZIP 檔)轉為純文字字串。
* **`tr` 指令位移對照**:`tr 'A-Za-z' 'N-ZA-Mn-za-m'`
## 📝 範例說明
### 1. 加密與混淆(打包)
將 `vim.zip` 轉為 Base64 後進行 ROT13 混淆並寫入檔案:
```bash
base64 -i vim.zip | tr 'A-Za-z' 'N-ZA-Mn-za-m' > backup_obfuscated.txt
```
### 2. 解密與還原(解包)
讀取混淆檔,再次透過 ROT13 還原 Base64 字串,最後進行 Base64 解碼:
```bash
cat backup_obfuscated.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m' | base64 -d > vim_restored.zip
```
---
`tr 'A-Za-z' 'N-ZA-Mn-za-m'` 的作用是將輸入文字中的**每一個英文字母往後推移 13 個位置**。
## 📌 核心知識
`tr` 是 Unix/Linux 系統中的「字元替換(translate)」指令。它的運作邏輯是**一對一對應替換**:第一個集合裡出現的第 $N$ 個字元,會被替換成第二個集合裡的第 $N$ 個字元。
* **`'A-Za-z'`**:代表「搜尋目標集合」,即所有大寫與小寫英文字母(A-Z 以及 a-z)。
* **`'N-ZA-Mn-za-m'`**:代表「替換目標集合」。它把字母順序改從 N 開頭,排到 Z 後接回 A 到 M(大寫與小寫皆同)。
## 🔸 類似概念
這就像是在做一張「密碼對照表」:
* **大寫字母對應**:
* 原本:`A B C D ... M N O P ... Z`
* 替換:`N O P Q ... Z A B C ... M`
* **小寫字母對應**:
* 原本:`a b c d ... m n o p ... z`
* 替換:`n o p q ... z a b c ... m`
非英文字母的字元(例如數字、標點符號、換行符)因為不在第一個集合內,所以會**保持原樣不變**。
## 📝 範例說明
若將字串 `"Hello"` 傳給這個指令:
1. **`H`** 在對照表中對應到 **`U`**
2. **`e`** 在對照表中對應到 **`r`**
3. **`l`** 在對照表中對應到 **`y`**
4. **`l`** 在對照表中對應到 **`y`**
5. **`o`** 在對照表中對應到 **`b`**
處理結果:
```bash
echo "Hello" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
# 輸出結果為:Uryyb
```