--- title: 中國餘式定理 CRT tags: crypto lang: zh_tw --- * [筆記總覽](https://hackmd.io/@LJP/rkerFdnqS) [TOC] # 中國餘式定理 CRT ## 簡介 Chinese Remainder Theorem (CRT) 若 $N = p \times q$ 其中 $p, q$ 互質 所有的 $a \in Z_N$ 可以 one-to-one mapping 到一張圖表 mapping 到的座標為 $(a\ mod\ p,\ a\ mod\ q)$ 直接看一個例子,$N = 15 = 3 \times 5$ 圖表的 y 軸為 $a\ mod\ 3$ ; x 軸為 $a\ mod\ 5$ | y軸\x軸 | 0 | 1 | 2 | 3 | 4 | | -------- | -------- | -------- | -- | -- | -- | | 0 | 0 | 6 | 12 | 3 | 9 | 1 | 10 | 1 | 7 | 13 | 4 | 2 | 5 | 11 | 2 | 8 | 14 給 $a$ 能很好得出座標 但給座標要如何反推 $a$ ? 舉個例子,若已知 $(a\ mod\ 7,\ a\ mod\ 5)$ 系統,求在 $(4,\ 3)$ 座標上的數字 $x$ 首先知道 $x \in Z_{7 \times 5}$ 根據 $x \equiv 4\ (mod\ 7)$ 可得知 $x = 7 \times u + 4$ 再根據 $x \equiv 3\ (mod\ 5)$ 替換為 $7u + 4 \equiv 3\ (mod\ 5)$ $7u \equiv 3-4 \equiv 3-4+5 \equiv 4\ (mod\ 5)$ $2u \equiv 4\ (mod\ 5)$ $u \equiv 2\ (mod\ 5)$ 求得 $u = 2,\ x = 7 \times 2 + 4 = 18$ ## 擴展 剛剛的方式僅能簡單處理由兩個質數組成的 $N$ 現在要擴展到 **由 $K$ 個不同的質數$\{P_1, P_2, ..., P_K\}$組成的 $N$,求快速從座標系統 $(a\ mod\ P_1, a\ mod\ P_2, ..., a\ mod\ P_K)$推回 x 的解法** $$ x \equiv \sum_{i = 1}^Ka_i \times M_i \times y_i\ (mod\ N) $$ - $a_i$: 第 i 軸上的係數 - $M_i = \frac{P}{P_i}$ , 其中 $P = \prod_{j = 1}^KP_j$ - $y_i \times M_i \equiv 1\ (mod\ P_i)$ ### 例子 以上面舉過的例子 > 若已知 $(a\ mod\ 7,\ a\ mod\ 5)$ 系統,求在 $(4,\ 3)$ 座標上的數字 $x$ > | 軸 | $a_i$ | $M_i$ | $y_i$ | | -- | -------- | -------- | -------- | | $mod\ 7$ | 4 | 5 | 3 | $mod\ 5$ | 3 | 7 | 3 $x \equiv a_1 \times M_1 \times y_1 + a_2 \times M_2 \times y_2\ (mod\ 35)$ $x \equiv 60 + 63 \equiv 123\ (mod\ 35)$ $x \equiv 18$