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

📄 bigint.h

📁 大数运算类,用于RSA算法,支持4096位二进制的数学运算
💻 H
字号:
#define BI_MAXLEN 512
#define AUTO 0
#define DEC 10
#define HEX 16

class CBigInt
{
public:
   int m_nSign;				//记录大数的符号,支持负值运算
   int m_nLength;			//记录0x10000000进制的位数,0-40之间,相当于2进制的0-1280位
   unsigned long m_ulValue[BI_MAXLEN];   //记录每一位的“数字”

   CBigInt();
   ~CBigInt();

	//将大数赋值为另一个大数 
	CBigInt& SetValue(CBigInt& A);

	//将大数赋值为编译器能够理解的任何整形常数或变量  
	CBigInt& SetValue(unsigned __int64 A); 

	//比较两个大数大小 
	int Compare(CBigInt& A);

	//计算两个大数的和 
	CBigInt Add(CBigInt& A);

	//重载函数以支持大数与普通整数相加
	CBigInt Add(long A);

	//计算两个大数的差
	CBigInt Sub(CBigInt& A);

	//重载函数以支持大数与普通整数相减
	CBigInt Sub(long A);

	//计算两个大数的积
	CBigInt Mul(CBigInt& A);

	//重载函数以支持大数与普通整数相乘
	CBigInt Mul(long A);

	//计算两个大数的商
	CBigInt Div(CBigInt& A);

	//重载函数以支持大数与普通整数相除
	CBigInt Div(long A);

	//计算两个大数相除的余数
	CBigInt Mod(CBigInt& A);

	//重载函数以支持大数与普通整数相除求模
	long Mod(long A); 

	//将输入的10进制或16进制字符串转换成大数
	int InPutFromStr(CString& str, const unsigned int system=AUTO);

	//将大数按10进制或16进制格式输出到字符串
	int OutPutToStr(CString& str, const unsigned int system=DEC);

	//欧几里德算法求:Y=X.Euc(A),使满足:YX mod A = 1
	CBigInt Euc(CBigInt& A);

	//蒙哥马利算法求:Y=X.Mon(A,B),使满足:X^A mod B = Y
	CBigInt Mon(CBigInt& A, CBigInt& B);

//	CBigInt& operator = (const unsigned __int64 A);
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -