?? bigint.h
字號:
/*****************************************************************
大數運算庫頭文件:BigInt.h
作者:afanty@vip.sina.com
版本:1.2 (2003.5.13)
說明:適用于MFC,1024位RSA運算
*****************************************************************/
//允許生成1120位(二進制)的中間結果
#ifndef BI_MAXLEN
#define BI_MAXLEN 35
#define DEC 10
#define HEX 16
class CBigInt
{
public:
//大數在0x100000000進制下的長度
unsigned m_nLength;
//用數組記錄大數在0x100000000進制下每一位的值
unsigned long m_ulValue[BI_MAXLEN];
CBigInt();
~CBigInt();
/*****************************************************************
基本操作與運算
Mov,賦值運算,可賦值為大數或普通整數,可重載為運算符“=”
Cmp,比較運算,可重載為運算符“==”、“!=”、“>=”、“<=”等
Add,加,求大數與大數或大數與普通整數的和,可重載為運算符“+”
Sub,減,求大數與大數或大數與普通整數的差,可重載為運算符“-”
Mul,乘,求大數與大數或大數與普通整數的積,可重載為運算符“*”
Div,除,求大數與大數或大數與普通整數的商,可重載為運算符“/”
Mod,模,求大數與大數或大數與普通整數的模,可重載為運算符“%”
*****************************************************************/
void Mov(unsigned __int64 A);
void Mov(CBigInt& A);
CBigInt Add(CBigInt& A);
CBigInt Sub(CBigInt& A);
CBigInt Mul(CBigInt& A);
CBigInt Div(CBigInt& A);
CBigInt Mod(CBigInt& A);
CBigInt Add(unsigned long A);
CBigInt Sub(unsigned long A);
CBigInt Mul(unsigned long A);
CBigInt Div(unsigned long A);
unsigned long Mod(unsigned long A);
int Cmp(CBigInt& A);
/*****************************************************************
輸入輸出
Get,從字符串按10進制或16進制格式輸入到大數
Put,將大數按10進制或16進制格式輸出到字符串
*****************************************************************/
void Get(CString& str, unsigned int system=HEX);
void Put(CString& str, unsigned int system=HEX);
/*****************************************************************
RSA相關運算
Rab,拉賓米勒算法進行素數測試
Euc,歐幾里德算法求解同余方程
RsaTrans,反復平方算法進行冪模運算
GetPrime,產生指定長度的隨機大素數
*****************************************************************/
int Rab();
CBigInt Euc(CBigInt& A);
CBigInt RsaTrans(CBigInt& A, CBigInt& B);
void GetPrime(int bits);
};
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -