為了解決大數運算的問題,世界各國的軟件開發人員和研究學者都進行了很多的研究和實踐。近年來,越來越多的開發人員開始重視軟件工程的作用,為了減少重復勞動,提高軟件的質量和代碼復用,許多優秀的大數運算庫隨之出現。下面對幾種優秀的大數庫進行簡單的介紹:
GMP:GMP大數庫是GNU項目的壹部分,誕生於1991年。作為壹個任意精度的大整數運算庫,它包括了任意精度的帶符號整數、有理數、浮點數的各種基本運算操作。它是壹個c語言的庫,但是官方提供了c++的包裝類,主要的應用方向是密碼學、網絡安全、代數系統、計算科學等。GMP庫的運行速度非常快的,它的官方網站上稱自己為地球上最快的大數庫,但是GMP庫所提供的只是數學運算功能,並沒有密碼學相關的高級功能。
Miracl:Miracl庫是Shamus Software Ltd開發的壹個大數庫,它的使用許可針對教育科學研究或者非商業目的地應用是免費的。在應用上它是壹個c語言的庫,同時提供了幾個較為簡單的c++包裝類。在功能上它不但提供了高精度的大整數和分數的各種數學運算操作而且提供了很多密碼學算法中的功能模塊,如SHA、AES、DSA等中的壹些底層操作。最為特別的是它還提供了很多橢圓曲線密碼體制中的底層功能模塊。由於Miracl庫的內部實現采用了很多的匯編層的代碼,故運行速度也非常快。
Crypto++:Crypto++庫是壹個開源項目,也是免費使用的。由於它是壹個純c++實現的庫,所以應用非常的方便,庫的結構清晰,使用方便,文檔也很健全。Crypto++庫提供了很多密碼學算法的實現。
OpenSSL:OpenSSL是壹個開放源代碼的實現了SSL及相關加密技術的軟件包,由加拿大的Eric Yang等發起編寫的。它可以實現消息摘要、文件的加密和解密、數字證書、數字簽名和隨機數字等。 它的主要用途並不是大數庫,而是SSL協議的實現和應用,但是其中也有壹些關於大整數的功能,此外它也是基於c語言。