⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bignumber.h

📁 这学期刚学密码学
💻 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 + -