首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

大整數算法系列(0):項目緣起、定位與技術路線圖

     編輯:關於C語言

大整數算法系列開篇:從 RSA 夢想到自研高性能庫

大一接觸 RSA 加密原理,被大數模冪運算深深吸引。C 語言原生 64 位整數遠不能滿足 1024 位甚至 4096 位密鑰需求。嘗試接入 OpenSSL、GMP、Crypto++ 等成熟庫,卻發現代碼過於複雜、風格晦澀、或效率低下。決定自研一個專注公鑰密碼學、純整數、簡潔高效、可移植的大整數庫,順帶鍛鍊系統編程能力。

項目定位與要求

  • 用途: 專供公鑰密碼學(RSA、DH、ECC 等)大整數運算,不支持浮點數。
  • 性能目標: 接近 OpenSSL 效率,作為學習與實用平衡點。
  • 代碼風格: 簡潔易讀,避免過度優化導致的不可維護。
  • 實現語言: C99,關鍵路徑考慮內聯匯編優化(x86/ARM)。
  • 移植性: 32/64 位系統自適應,大小端兼容。

參考資料

  1. Handbook of Applied Cryptography (HAC) —— 理論基石
  2. BigNum Math: Implementing Cryptographic Multiple Precision Arithmetic —— 工程實踐指南
  3. OpenSSL / PolarSSL(mbedTLS) / LibTomMath —— 參考實現對比

系列文章規劃(持續更新)

篇幅主題核心內容
01大整數表示與相關定義bn_digit、bignum 結構、參數傳遣約定、錯誤碼體系
02基本維護算法初始化、銷毀、精度增長、復制、賦值、交換
03比較操作絕對值/有符號比較、與單精度數比較
04位設置操作置位、清位、翻轉、測試
05移位操作左/右移位、原地/新建、按位/按字
06絕對值加法多精度加法、進位傳播、Comba 技術預覽
07絕對值減法多精度減法、借位處理
08有符號加減法符號判斷、調用絕對值運算
09Comba 乘法列乘法優化、延遲進位、O(n²) 低常數
10Karatsuba 乘法分治策略、O(n^1.585)、閾值切換
11有符號乘法符號處理、調用核心乘法
12Comba 平方利用對稱性優化、約半數乘法
13Karatsuba 平方平方專用分治優化
14有符號平方符號處理
15帶餘數除法Knuth Algorithm D、試商修正、模運算基石
...模運算、蒙哥馬利約減、素性測試、RSA 完整實現後續規劃

開發週期與現狀

2014 年初啟動,歷時半年完成核心模塊。雖未達工業級庫的全方位健壯性,但核心算法正確、性能可用、代碼清晰,決定以系列博文形式分享心得,拋磚引玉。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved