---
# System prepended metadata

title: 【密碼學 II - Basic Number Theory】

---

# 【密碼學 II - Basic Number Theory】

## 01. 整數算術 (Integer Arithmetic)

這部分回顧了整數的基本運算，為後續的模數算術打下基礎 。

### 01-01. 整數集合 (Z) 與二元運算
- **整數集合 (Z)**：包含從負無窮大到正無窮大的所有整數 ( ... , -2, -1, 0, 1, 2, ... )。
![截圖 2025-10-02 凌晨1.48.12](https://hackmd.io/_uploads/r1KPt1shee.png)

* **二元運算**：作用於整數集合的運算，可接受兩個輸入值，並產生一個輸出值。
    1. 主要有三種：加法、減法、乘法。
    2. 例如：`5 + 3 = 8`、`7 - 4 = 3`、`6 * 2 = 12`。
![截圖 2025-10-02 凌晨1.48.48](https://hackmd.io/_uploads/H1JqFys3gl.png)

### 01-02. 整數除法 (Integer Division)
* 將整數 `a`（被除數）除以 `n`（除數），會得到商 `q` 和餘數 `r`。
* **關係式**：`a = q * n + r`，其中 `0 ≤ r < n`。
    1. `q = floor(a / n)`
    2. `r = a mod n` (在密碼學中，餘數 `r` 必須為正)
* **範例**：
    1. `a = 25`, `n = 7`
    2. `25 = 3 * 7 + 4` ( q = 3, r = 4 )
![截圖 2025-10-02 凌晨1.50.07](https://hackmd.io/_uploads/BypCYJi3el.png)
* **處理負數**：當 `a` 為負數時，電腦計算的 `r` 和 `q` 可能為負。
    1. 例如：`-25` 除以 `7`，電腦可能算出 `-25 = (-3) * 7 + (-4)`。
    2. **修正規則**：為使 `r` 變為正數，我們將 `q` 值減 1，並將 `r` 值加 `n`。
    3. **修正後**：`q = -3 - 1 = -4`、`r = -4 + 7 = 3`
    4. **驗證**：`a = (-4) * 7 + 3 = -28 + 3 = -25`。因此正確表示為 `q = -4, r = 3`。
![截圖 2025-10-02 凌晨1.51.18](https://hackmd.io/_uploads/rJrmckj2ee.png)

### 01-03. 整除性 (Divisibility)
* 如果 `a = q * n + r` 且 `r = 0`，代表 `n` 可以整除 `a`，記為 $n \mid a$。
* 如果 `r ≠ 0`，代表 `n` 無法整除 `a`，記為 $n \nmid a$。
* **範例**：
    1. $4 \mid 32$ (因為 $32 = 8 \times 4 + 0$)
    2. $8 \nmid 42$ (因為 $42 = 5 \times 8 + 2$)
    3. $13 \mid 78$, $7 \mid 98$, $−6 \mid 24$, $4 \mid 44$, $11 \mid (−33)$
* **基本性質**：
    1. 如果 $a \mid 1$， 則 $a = \pm 1$。
    2. 如果 $a \mid b$ 且 $b \mid a$，則 $a = \pm b$。

### 01-04. 整除性的重要性質
* **性質 1 (遞移性)**：若 $a \mid b$ 且 $b \mid c$，則 $a \mid c$。
    * `範例`：$3 \mid 6$ 且 $6 \mid 18$，則 $3 \mid 18$。
* **性質 2 (線性組合)**：若 $a \mid b$ 且 $a \mid c$，則對於任意整數 `m` 和 `n`，恆有 $a \mid (m \times b + n \times c)$。
    * `範例`：$5 \mid 10$ 且 $5 \mid 25$。取 $m=2, n=3$，則 $5 \mid (2 \times 10 + 3 \times 25)$ $\Rightarrow$ $5 \mid (20 + 75)$ $\Rightarrow$ $5 \mid 95$。
* **性質 3 (因數)**：整數 1 只有一個正因數 (Divisor)，就是 1。
* **性質 4 (因數)**：任何大於 1 的整數至少有 2 個正因數，1 和它自己。
![截圖 2025-10-02 凌晨2.10.34](https://hackmd.io/_uploads/B1_iAyj2le.png)

### 01-05. 最大公因數 (Greatest Common Divisor, GCD)
`gcd(a, b)` 是指所有能同時整除 `a` 和 `b` 的最大正整數。
- `範例`：`gcd(12, 18) = 6`。
- `範例`：`gcd(25, 60) = 5`。

**歐幾里德演算法 (Euclidean Algorithm)**：一種用來求 GCD 的高效方法，基於 $gcd(a, b) = gcd(b, r)$ 的原理，其中 $r$ 是 $a$ 除以 $b$ 的餘數 。
- 一種用來求 GCD 的高效方法，基於 $gcd(a, b) = gcd(b, r)$ 的原理，其中 $r = a \mod b$。
- `範例：試求 gcd(2740, 1760)`
![截圖 2025-10-29 晚上11.47.00](https://hackmd.io/_uploads/B1lZv2JJ-e.png)

![截圖 2025-10-02 凌晨2.13.08](https://hackmd.io/_uploads/H1zBklshge.png)

### 01-06. 歐幾里德延伸演算法 (Extended Euclidean Algorithm)
* 除了找出 `d = gcd(a, b)`，還能找出整數 `s` 和 `t`，使其滿足貝祖等式 (Bézout's identity)：$s \times a + t \times b = gcd(a, b)$
* 這個演算法在後續求乘法反元素時非常重要。
* **互質 (Relatively Prime)**：當 $gcd(a, b) = 1$ 時，我們說 `a` 和 `b` 互質。
![截圖 2025-10-02 凌晨2.15.28](https://hackmd.io/_uploads/Hk261gonll.png)
![截圖 2025-10-02 凌晨2.15.40](https://hackmd.io/_uploads/Bk8R1gihll.png)

:::success
- 給定 $a = 161$ 和 $b = 28$，求出 $gcd(a, b)$ 以及 $s$ 和 $t$ 的值？$gcd(161, 28) = 7$，$s = −1$ 和 $t = 6$
![截圖 2025-10-02 凌晨2.17.03](https://hackmd.io/_uploads/r15Xxeohel.png)
- 給定 $a = 17$ 和 $b = 0$，求出 $gcd(a, b)$ 以及 $s$ 和 $t$ 的值？$gcd(a, b) = s * a = 17$, $s = 1$, $t = 0$
- 給定 $a = 0$ 和 $b = 45$，求出 $gcd(a, b)$ 以及 $s$ 和 $t$ 的值？$gcd(a, b) = s * a = 45$, $s = 0$, $t = 1$
:::

### 01-07. 線性 Diophantine 方程式 (Linear Diophantine Equation)
* 形式為 `ax + by = c` 的線性不定方程式，求解整數解 `x` 和 `y`。
* **解的條件**：令 `d = gcd(a, b)`。只有當 `d|c`（`d` 能整除 `c`）時，此方程式才有整數解。
* **特解 (Particular Solution)**：
    1. 利用延伸歐幾里德演算法求出 `s`, `t` 使得 `as + bt = d`。
    2. 特解 $x_0 = (c / d) \times s$ 和 $y_0 = (c / d) \times t$。
* **通解 (General Solution)**：
    1. $x = x_0 + k \times (b / d)$
    2. $y = y_0 - k \times (a / d)$，其中 `k` 為任意整數。

:::success
**重點筆記**：
- 求出方程式 $21x + 14y = 35$ 的特解和通解
![截圖 2025-10-02 凌晨2.21.29](https://hackmd.io/_uploads/HyINbejnel.png)

- 舉例來說，我們要把 100 美元的支票兌換成一些由 20 美元和 5 美元的鈔票。利用求解線性 Diophantine 方程式 $20x + 5y = 100$，可以找出許多不同的兌換方式。因為 $d = gcd(20, 5) = 5$，而且 $5 \mid 100$，此方程式有無限多解，但本例中，這些解中只有少數是合理的 ( $x$ 值和 $y$ 值必須同時為非負整數解)
    1. `d = gcd(20, 5) = 5`。$5 \mid 100$，有解。
    2. 此情境只要求 $x, y$ 均為非負整數的解（例如 x=5, y=0 或 x=2, y=12）。
:::
<br>

## 02 模數算術 (Modular Arithmetic)
這是密碼學的核心，主要關注除法運算中的餘數 。

### 02-01. 模運算子 (Modulo Operator)
* 符號為 `mod`，`a mod n` 的結果就是 `a` 除以 `n` 的餘數 `r`。
* `範例`：
    1. `27 mod 5 = 2` (因為 $27 = 5 \times 5 + 2$)
    2. `10 mod 2 = 0` (因為 $10 = 5 \times 2 + 0$)
![截圖 2025-10-30 凌晨12.34.00](https://hackmd.io/_uploads/BkEWMT1kbl.png)

### 02-02. 餘數集合 (Set of Residues, Zn)
* `Zn` 是由模 `n` 運算後所有可能的餘數所組成的集合。
* `Zn = {0, 1, 2, ..., n-1}`。
* `範例`：
    1. $Z_2 = \{0, 1\}$
    2. $Z_5 = \{0, 1, 2, 3, 4\}$
    3. $Z_{10} = \{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\}$
![截圖 2025-10-30 凌晨12.34.11](https://hackmd.io/_uploads/HkffGpkkbl.png)

### 02-03. 同餘 (Congruence)

* 如果兩個整數 `a` 和 `b` 在除以 `n` 後有相同的餘數，則稱 `a` 和 `b` 在模 `n` 之下同餘。
* 記為 $a \equiv b \pmod n$。
* `範例`：
    1. $27 \equiv 12 \pmod 5$
    2. `說明`：因為 $27 \mod 5 = 2$，且 $12 \mod 5 = 2$，兩者餘數相同。
    3. `同理`：$100 \equiv 2 \pmod 7$ ( $100 = 14 \times 7 + 2$ )
![截圖 2025-10-30 凌晨12.35.10](https://hackmd.io/_uploads/HkArzp11bl.png)

### 02-04. Zn 下的運算與性質
* 在 `Zn` 集合中也可以進行加、減、乘運算，其結果都需要再做一次 `mod n` 來確保仍在 `Zn` 集合內。
* 範例 (在 $Z_8$ 中)：
    1. `加法`：$(5 + 7) \mod 8 = 12 \mod 8 = 4$
    2. `減法`：$(3 - 6) \mod 8 = -3 \mod 8 = 5$
    3. `乘法`：$(5 \times 3) \mod 8 = 15 \mod 8 = 7$
* **重要性質**：
    1. `(a + b) mod n = [(a mod n) + (b mod n)] mod n`
    2. `(a - b) mod n = [(a mod n) - (b mod n)] mod n`
    3. `(a * b) mod n = [(a mod n) * (b mod n)] mod n`
* `範例`：計算 $(1234 \times 5678) \mod 10$
    1. $1234 \mod 10 = 4$
    2. $5678 \mod 10 = 8$
    3. $(4 \times 8) \mod 10 = 32 \mod 10 = 2$
    4. (這比計算 $1234 \times 5678 = 7006652$ 再取 mod 10 要快)
![截圖 2025-10-30 凌晨12.35.37](https://hackmd.io/_uploads/rJHDzTk1Ze.png)
![截圖 2025-10-30 凌晨12.35.49](https://hackmd.io/_uploads/H1-_fTJ1-x.png)

### 02-05. 反元素 (Inverse)
**加法反元素 (Additive Inverse)**：
* 在 `Zn` 中，若 $a + b \equiv 0 \pmod n$，則 `a` 和 `b` 互為加法反元素。
* 在 `Zn` 中，每個整數 `a` 都有加法反元素，即 `(n - a)`。
* 範例 (在 $Z_9$ 中)：
    1. `3` 的加法反元素是 `6`，因為 $(3 + 6) \mod 9 = 0$。
    2. `5` 的加法反元素是 `4`，因為 $(5 + 4) \mod 9 = 0$。

**乘法反元素 (Multiplicative Inverse)**：
* 在 `Zn` 中，若 $a \times b \equiv 1 \pmod n$，則 `b` 稱為 `a` 的乘法反元素，記為 $a^{-1}$。
* **存在條件**：並非每個整數都有乘法反元素。只有當 $gcd(a, n) = 1$（a 和 n 互質）時，`a` 在 `Zn` 中才存在乘法反元素。
* **求解**：可以使用歐幾里德延伸演算法來求解。
* 範例 (在 $Z_7$ 中求 3 的反元素)：
    1. 我們在找 $3x \equiv 1 \pmod 7$。
    2. `1. 檢查`：$gcd(3, 7) = 1$，所以存在反元素。
    3. `2. 求解`：$3 \times 5 = 15 \equiv 1 \pmod 7$。
    4. `結果`：$3$ 在 $Z_7$ 中的乘法反元素是 $5$。
* 範例 (在 $Z_8$ 中求 4 的反元素)：
    1. `1. 檢查`：$gcd(4, 8) = 4$。
    2. `結果`：因為 $gcd \neq 1$，所以 $4$ 在 $Z_8$ 中沒有乘法反元素。

<br>

## 03 矩陣 (Matrix)
矩陣在密碼學中也常被使用，這裡回顧了其基本運算 。
- **基本運算**：包含矩陣的加法、減法、乘法以及純量乘法 。
- **行列式 (Determinant)**：只有方陣才有行列式，是一個純量值 。
- **反矩陣 (Inverse Matrix)**：只有方陣可能存在反矩陣。若矩陣 `A` 的反矩陣為 `A⁻¹`，則 `A * A⁻¹ = A⁻¹ * A = I` (單位矩陣) 。
- **餘數矩陣 (Residual Matrix)**：矩陣中的所有元素都定義在 Zn 中 。一個餘數矩陣 A 具有乘法反矩陣的條件是 `gcd(det(A), n) = 1` 。

<br>

## 04 線性同餘 (Linear Congruence)
這部分討論如何解在 `Zn` 中的線性方程式 。
- **單變數線性方程式**：形式為 `ax ≡ b (mod n)`。
- **解的條件**：令 `d = gcd(a, n)`。
    1. 如果 `d` 無法整除 `b (dłb)`，則方程式無解 。
    2. 如果 `d` 可以整除 `b (d|b)`，則方程式恰好有 `d` 個解 。