大一接觸 RSA 加密原理,被大數模冪運算深深吸引。C 語言原生 64 位整數遠不能滿足 1024 位甚至 4096 位密鑰需求。嘗試接入 OpenSSL、GMP、Crypto++ 等成熟庫,卻發現代碼過於複雜、風格晦澀、或效率低下。決定自研一個專注公鑰密碼學、純整數、簡潔高效、可移植的大整數庫,順帶鍛鍊系統編程能力。
| 篇幅 | 主題 | 核心內容 |
|---|---|---|
| 01 | 大整數表示與相關定義 | bn_digit、bignum 結構、參數傳遣約定、錯誤碼體系 |
| 02 | 基本維護算法 | 初始化、銷毀、精度增長、復制、賦值、交換 |
| 03 | 比較操作 | 絕對值/有符號比較、與單精度數比較 |
| 04 | 位設置操作 | 置位、清位、翻轉、測試 |
| 05 | 移位操作 | 左/右移位、原地/新建、按位/按字 |
| 06 | 絕對值加法 | 多精度加法、進位傳播、Comba 技術預覽 |
| 07 | 絕對值減法 | 多精度減法、借位處理 |
| 08 | 有符號加減法 | 符號判斷、調用絕對值運算 |
| 09 | Comba 乘法 | 列乘法優化、延遲進位、O(n²) 低常數 |
| 10 | Karatsuba 乘法 | 分治策略、O(n^1.585)、閾值切換 |
| 11 | 有符號乘法 | 符號處理、調用核心乘法 |
| 12 | Comba 平方 | 利用對稱性優化、約半數乘法 |
| 13 | Karatsuba 平方 | 平方專用分治優化 |
| 14 | 有符號平方 | 符號處理 |
| 15 | 帶餘數除法 | Knuth Algorithm D、試商修正、模運算基石 |
| ... | 模運算、蒙哥馬利約減、素性測試、RSA 完整實現 | 後續規劃 |
2014 年初啟動,歷時半年完成核心模塊。雖未達工業級庫的全方位健壯性,但核心算法正確、性能可用、代碼清晰,決定以系列博文形式分享心得,拋磚引玉。