?? bignumber.h
字號:
#ifdef BIGNUMBER_EXPORTS
#define BIGNUMBER_API __declspec(dllexport)
#else
#define BIGNUMBER_API __declspec(dllimport)
#endif
#define MAXLENGTH 35
#ifndef __ABCD__
#define __ABCD__
// This class is exported from the BigNumber.dll
class BIGNUMBER_API CBigNumber {
public:
CBigNumber();
~CBigNumber();
//基本運算
void Init(unsigned __int64 bn);
void Init(const CBigNumber BN);
CBigNumber Add(const CBigNumber BN);
CBigNumber Sub(const CBigNumber BN);
CBigNumber Mul(const CBigNumber BN);
CBigNumber Div(const CBigNumber BN);
CBigNumber Mod(const CBigNumber BN);
CBigNumber Add(const unsigned long bn);
CBigNumber Sub(const unsigned long bn);
CBigNumber Mul(const unsigned long bn);
CBigNumber Div(const unsigned long bn);
unsigned long Mod(const unsigned long bn);
int Cmp(const CBigNumber BN);
//
//StringToBigNumber,從字符串按10進制或16進制格式輸入到大數
//BigNumberToString,將大數按10進制或16進制格式輸出到字符串
//CharsToNumber, 把輸入的明文串按字節轉換成數字,比如'a'->353,我->206210,原理是ascii碼=256,
// 這樣對于漢字可以得到區位碼。所以dest的空間是sour的3倍加一個結束符。
//GetElapsedTime, 應該設置(10個字節足矣)長度且清空
//NumberToChars, 10進制字符串轉換成ASCII碼,最終得到明文
//StringToChars,把CString對象轉換得到一個szChar串。
void StringToBigNumber(const CString str);
void BigNumberToString(char *str);
void CharsToNumber(char *dest, char *sour);
void NumberToChars(char *dest, const char *sour);
void GetElapsedTime(char *time, SYSTEMTIME before, SYSTEMTIME after);
void CharsToString(CString &dest, const char *sour);
void StringToChars(char *dest, const CString sour);
//
//RabinTest,拉賓米勒算法進行素數測試
//EolEqu,歐幾里德算法求解同余方程
//RsaEn,反復平方算法進行冪模運算
//GetPrime,產生指定長度的隨機大素數
//
int RabinTest();
CBigNumber SolEqu(const CBigNumber BN);
CBigNumber RsaEn(CBigNumber &A, CBigNumber &B);
void GetPrime(int nbits);
public:
unsigned m_nLength; // 大數有多少個unsigned long數組元素
unsigned long m_ulValue[MAXLENGTH];// 一個大數的大小:sizeof(MAXLENGTH*(unsigned long))
};
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -