大数运算库简介
一、技術背景
在網絡安全技術領域中各種加密解密算法的軟件實現上始終有一個共同的問題就是如何在普通的 PC 機上實現大數的運算。我們日常生活中所應用的 PC 機內部字長多是32 位或 64 位,但是在各種加密解密的算法中為了達到一定的安全強度,都是要求在128 位、 512 位或者是 1024 位這樣的字長下進行加減乘除模逆等各種數學運算,我們稱為大數運算。在這樣的前提下,如何在 PC 機上快速高效的實現大數運算就很自然的成為了在 PC 機上實現加密解密算法最為基礎和重要的問題。像 Python 、 Lisp等語言都內建了大數計算機制,但是像 C/C++ 語言既沒有內建大數運算機制也沒有對應的標準庫實現。
二、優秀的大數庫
為了解決 C/C++ 大數運算的問題,許多優秀的大數運算庫隨之出現。下面對幾種優秀的大數庫進行簡單的介紹:
GMP : GMP 大數庫是 GNU 項目的一部分,誕生于 1991 年。作為一個任意精度的大整數運算庫,它包括了任意精度的整數、浮點數的各種基本運算操作。它是一個C 語言的庫,但是官方提供了 C++ 的包裝類,主要的應用方向是密碼學、網絡安全、代數系統、計算科學等。 GMP 庫的運行速度非常快,它的官方網站上稱自己為地球上最快的大數庫,但是 GMP 庫所提供的只是數學運算功能,并沒有密碼學相關的高級功能。 ?(注: GMP 安裝如果出現了問題,可能是安裝包所在目錄太深了,試著換個目錄重新安裝下)
Miracl : Miracl 庫是 Shamus Software Ltd 開發的一個大數庫,它的使用許可針對教育科學研究或者非商業目的的應用是免費的。它是一個 C 語言的庫,同時提供了幾個較為簡單的 c++ 包裝類。在功能上它不但提供了高精度的大整數和分數的各種數學運算操作而且提供了很多密碼學算法中的功能模塊,如 SHA 、 AES 、 DSA 等中的一些底層操作。最為特別的是它還提供了很多橢圓曲線密碼體制中的底層功能模塊。由于 Miracl 庫的內部實現采用了很多的匯編代碼,故運行速度也非常快。
Crypto++ : Crypto++ 庫是一個開源項目。由于它是一個純 C++ 實現的庫,所以應用非常的方便,庫的結構清晰,文檔也很健全。 Crypto++ 庫提供了很多密碼學算法的實現。
OpenSSL : OpenSSL 是一個開放源代碼的實現了 SSL 及相關加密技術的軟件包,由加拿大的 Eric Yang 等發起編寫的。它可以實現消息摘要、文件的加密和解密、數字證書、數字簽名和隨機數字等。 它的主要用途并不是大數庫,而是 SSL 協議的實現和應用,但是其中也有一些關于大整數的功能,此外它也是基于 C 語言。
三:資源鏈接
下面是一些常用的大數運算庫的地址(有些雖然不是專門的大數運算庫,但是帶有相關的庫)
Crypto++ : http://www.eskimo.com/~weidai/cryptlib.html MIRACL : https://github.com/CertiVox/MIRACL GNU MP : http://www.swox.com/gmp/ Piologie : http://www.hipilib.de/pidownload.htm cryptlib : http://www.cs.auckland.ac.nz/~pgut001/cryptlib/ RSAEuro : http://www.rsaeuro.com/products/RSAEuro/ OpenSSL : http://www.openssl.org/ RSARef : http://download.gale.org/rsaref20.tar.Z GInt : http://triade.studentenweb.org/GInt/gint.html ( Delphi )
轉載自:http://www.tuicool.com/articles/iEbU7fM
在網絡安全技術領域中各種加密解密算法的軟件實現上始終有一個共同的問題就是如何在普通的 PC 機上實現大數的運算。我們日常生活中所應用的 PC 機內部字長多是32 位或 64 位,但是在各種加密解密的算法中為了達到一定的安全強度,都是要求在128 位、 512 位或者是 1024 位這樣的字長下進行加減乘除模逆等各種數學運算,我們稱為大數運算。在這樣的前提下,如何在 PC 機上快速高效的實現大數運算就很自然的成為了在 PC 機上實現加密解密算法最為基礎和重要的問題。像 Python 、 Lisp等語言都內建了大數計算機制,但是像 C/C++ 語言既沒有內建大數運算機制也沒有對應的標準庫實現。
二、優秀的大數庫
為了解決 C/C++ 大數運算的問題,許多優秀的大數運算庫隨之出現。下面對幾種優秀的大數庫進行簡單的介紹:
GMP : GMP 大數庫是 GNU 項目的一部分,誕生于 1991 年。作為一個任意精度的大整數運算庫,它包括了任意精度的整數、浮點數的各種基本運算操作。它是一個C 語言的庫,但是官方提供了 C++ 的包裝類,主要的應用方向是密碼學、網絡安全、代數系統、計算科學等。 GMP 庫的運行速度非常快,它的官方網站上稱自己為地球上最快的大數庫,但是 GMP 庫所提供的只是數學運算功能,并沒有密碼學相關的高級功能。 ?(注: GMP 安裝如果出現了問題,可能是安裝包所在目錄太深了,試著換個目錄重新安裝下)
Miracl : Miracl 庫是 Shamus Software Ltd 開發的一個大數庫,它的使用許可針對教育科學研究或者非商業目的的應用是免費的。它是一個 C 語言的庫,同時提供了幾個較為簡單的 c++ 包裝類。在功能上它不但提供了高精度的大整數和分數的各種數學運算操作而且提供了很多密碼學算法中的功能模塊,如 SHA 、 AES 、 DSA 等中的一些底層操作。最為特別的是它還提供了很多橢圓曲線密碼體制中的底層功能模塊。由于 Miracl 庫的內部實現采用了很多的匯編代碼,故運行速度也非常快。
Crypto++ : Crypto++ 庫是一個開源項目。由于它是一個純 C++ 實現的庫,所以應用非常的方便,庫的結構清晰,文檔也很健全。 Crypto++ 庫提供了很多密碼學算法的實現。
OpenSSL : OpenSSL 是一個開放源代碼的實現了 SSL 及相關加密技術的軟件包,由加拿大的 Eric Yang 等發起編寫的。它可以實現消息摘要、文件的加密和解密、數字證書、數字簽名和隨機數字等。 它的主要用途并不是大數庫,而是 SSL 協議的實現和應用,但是其中也有一些關于大整數的功能,此外它也是基于 C 語言。
三:資源鏈接
下面是一些常用的大數運算庫的地址(有些雖然不是專門的大數運算庫,但是帶有相關的庫)
Crypto++ : http://www.eskimo.com/~weidai/cryptlib.html MIRACL : https://github.com/CertiVox/MIRACL GNU MP : http://www.swox.com/gmp/ Piologie : http://www.hipilib.de/pidownload.htm cryptlib : http://www.cs.auckland.ac.nz/~pgut001/cryptlib/ RSAEuro : http://www.rsaeuro.com/products/RSAEuro/ OpenSSL : http://www.openssl.org/ RSARef : http://download.gale.org/rsaref20.tar.Z GInt : http://triade.studentenweb.org/GInt/gint.html ( Delphi )
轉載自:http://www.tuicool.com/articles/iEbU7fM
總結
- 上一篇: mysql分列查询,Mysql导出问题,
- 下一篇: skywalking(4)