亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bigint.cpp

?? 混合加密程序,RSA算法加密DES密鑰,DES算法加密消息.很多通訊系統都是這樣加密的
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
    InitMulCache(B);
    for(int i=A.len-1,f,h,t,m; i>=0; )
    {
        if( !GetDivNext(Mod,A,B,i) )
            break;
        //用二分法找商
        h=1; t=BI_BASE-1;
        while( h<=t )
        {
            m = (h+t) >> 1;
            f = Cmp(MulCache[m],Mod);
            if( !f )
                break;
            if( f>0 )
                t = m-1;
            else
                h = m+1;
        }
        Out.bit[i+1] = f ? --h : m;

        if(f)
            Sub(Mod,Mod,MulCache[h]);
        else 
            Mod = Zero;
     }
    
    SetLen( Out,A.len-B.len);
	Spls = Mod;
	M = Out;

    return true;
}
/******************************************************************************/
//  名稱:Add
//  功能:大數加法 ( C = A + B )
//  參數:
//	返回:成功返回true,否則返回false
//  備注:
//	更新:2003/1/25
//	作者:0200935王俊川
/***************************************************************************/
bool CBigInt::Add(BigInt &C,BigInt &A,BigInt &B)
{
    static BigInt Out,*pa,*pb;

    if( A.len > B.len )
		pa=&A,pb=&B;
	else
		pa=&B,pb=&A;

	Out = *pa;

	for(UINT i=0,carry=0,j=pb->len,tmp; i<j; ++i)
    {
        tmp = pa->bit[i] + pb->bit[i] + carry;
        if( tmp > BI_BASE-1 )
        {
            tmp -= BI_BASE;
            carry = 1;
        }
        else
        {
            carry = 0;
        }
        Out.bit[i] = tmp;
    }

	if(carry)
    {
        while( Out.bit[i] == BI_BASE-1 )
        {
            Out.bit[i] = 0;
            CHECK( ++i < BI_MAXLEN );
        }
        CHECK( i < BI_MAXLEN );
        ++Out.bit[i];
        if( i == pa->len )
            ++Out.len;
    }

    C = Out;

	return true;
}
/******************************************************************************/
//	名稱:Sub
//	功能:大數減法 ( C = A - B )
//  參數:
//	返回:成功返回true,否則返回false
//  備注:調用前保證A >= B,否則結果不對
//	更新:2003/1/25
//	作者:0200935王俊川
/******************************************************************************/
bool CBigInt::Sub(BigInt &C,BigInt &A,const BigInt &B)
{
	if( &C != &A )
		C = A;

    for(int i=0,carry=0,j=B.len,tmp; i<j; ++i)
    {
        tmp = A.bit[i] - B.bit[i] - carry;
        if( tmp<0 )
        {
            tmp += BI_BASE;
            carry = 1;
        }
        else
		{
            carry = 0;
		}
        C.bit[i] = tmp;
    }
    
    if(carry)
    {
        while( !C.bit[i] )
        {
            C.bit[i] = BI_BASE-1;
            CHECK( ++i < BI_MAXLEN );
        }
        CHECK( i < BI_MAXLEN );
        --C.bit[i];
    }

	SetLen(C,C.len-1);

	return true;
}
/******************************************************************************/
//	名稱:InitMulCache
//	功能:初始化乘法緩存 ( MulCache[i] = In*i )
//  參數:
//	返回:成功返回true,否則返回false
//  備注:
//	更新:2003/1/20
//	作者:0200906高志剛
/******************************************************************************/
bool CBigInt::InitMulCache(BigInt &In)
{
    MulCache[1] = In;

	for(int i=2; i<BI_BASE; ++i)
	{
		CHECK( Add(MulCache[i],MulCache[i-1],In) )
	}

	return true;
}
/******************************************************************************/
//  名稱:SetLen
//  功能:設置大數的長度
//  參數:
//	返回:
//  備注:
//	更新:2003/1/20
//	作者:0200906高志剛
/***************************************************************************/
void CBigInt::SetLen(BigInt &BI,UINT start)
{
	for( int i=start; i>=0 && !BI.bit[i]; --i );

    BI.len = i+1;
}
/******************************************************************************/
//	名稱:ShR
//	功能:大數邏輯右移
//  參數:
//	返回:成功返回true,否則返回false
//  備注:
//	更新:2003/1/20
//	作者:0200906高志剛
/******************************************************************************/
bool CBigInt::ShR(BigInt &Out,BigInt &In,UINT len)
{
    CHECK( (In.len+len) <= BI_MAXLEN )
    
    if( !len )
	{
		if( &Out != &In )
			Out = In;
	}
    else if( In.len )
    {
        static BigInt Tmp;
		Tmp = Zero;
        memcpy(Tmp.bit+len,In.bit,In.len);
        Tmp.len = In.len + len;
		Out = Tmp;
    }

	return true;
}
/******************************************************************************/
//	名稱:Cmp
//	功能:大數比較
//  參數:
//	返回:A>B 返回 1; A=B 返回 0; A<B 返回 -1
//  備注:
//	更新:2003/1/20
//	作者:0200906高志剛
/******************************************************************************/
int CBigInt::Cmp(const BigInt &A,const BigInt &B)
{
    int i=A.len;

	if( (UINT)i > B.len )
	    return 1;
	if( (UINT)i < B.len )
	    return -1;

    for(--i; i>=0; --i)
    {
        if( A.bit[i] > B.bit[i] )
            return 1;
        if( A.bit[i] < B.bit[i] )
            return -1;
    }

    return 0;
}
/******************************************************************************/
//	名稱:New
//	功能:產生一個大數
//  參數:
//	返回:
//  備注:
//	更新:2003/1/20
//	作者:0200906高志剛
/******************************************************************************/
BigInt CBigInt::New(long n)
{
    int i=0;
    BigInt Out;

    memset(Out.bit,0,BI_MAXLEN);
    while(n)
    {
        Out.bit[i++] = n%BI_BASE;
        n /= BI_BASE;
    }
    Out.len = i;
    
    return Out;
}
/******************************************************************************/
//	名稱:GetVal
//	功能:獲取大數的值
//  參數:
//	返回:
//  備注:
//	更新:2003/1/20
//	作者:0200906高志剛
/******************************************************************************/
long CBigInt::GetVal(const BigInt &In)
{
    CHECK( In.len )
    
    long n=0;

    for(int i=In.len-1; i>=0; --i)
    {
        n *= BI_BASE;
        n += In.bit[i];
    }

    return n;
}
/******************************************************************************/
//	名稱:SetVal
//	功能:設置大數的值
//  參數:
//	返回:
//  備注:
//	更新:2003/1/20
//	作者:0200906高志剛
/******************************************************************************/
void CBigInt::SetVal(BigInt &BI,long n)
{
    int i=0;

    BI = Zero;
    while(n)
    {
        BI.bit[i++] = n%BI_BASE;
        n /= BI_BASE;
    }
    BI.len = i;
}
/******************************************************************************/
//	名稱:BuildBIFromByte
//	功能:由輸入字節組構造一個大數
//  參數:
//	返回:構造成功返回true,否則返回false
//  備注:
//	更新:2003/1/20
//	作者:0200906高志剛
/******************************************************************************/
bool CBigInt::BuildBIFromByte(BigInt &Out,const char *In,UINT len)
{
	CHECK( In && len<=BI_MAXLEN/4 )

    Out = Zero;
	CGfL::ByteToHalfByte(Out.bit,In,len);
    SetLen(Out,len<<1);

	return true;
}
/******************************************************************************/
//	名稱:BuildBIFromHalfByte
//	功能:由輸入半字節組構造一個大數
//  參數:
//	返回:構造成功返回true,否則返回false
//  備注:
//	更新:2003/1/20
//	作者:0200906高志剛
/******************************************************************************/
bool CBigInt::BuildBIFromHalfByte(BigInt &Out,const char *In,UINT len)
{
	CHECK( In && len<=BI_MAXLEN/2 )

    Out = Zero;
	memcpy(Out.bit,In,len);
    SetLen(Out,len);

	return true;
}
/******************************************************************************/
//	名稱:BuildBIFromStr
//	功能:由輸入字符串構造一個大數
//  參數:len—字符串長度
//	返回:構造成功返回true,否則返回false
//  備注:
//	更新:2003/1/20
//	作者:0200906高志剛
/******************************************************************************/
bool CBigInt::BuildBIFromStr(BigInt &Out,char *In,UINT len)
{
	CHECK( In && len<=BI_MAXLEN/2 )

    Out = Zero;
	CGfL::StrToHalfByte( Out.bit,In,len);
    SetLen(Out,len);

	return true;
}
/******************************************************************************/
//	名稱:Rand
//	功能:產生隨機大數
//  參數:len—隨機大數的長度
//	返回:產生成功返回true,否則返回false
//  備注:
//	更新:2003/1/20
//	作者:0200906高志剛
/******************************************************************************/
bool CBigInt::RandVal(BigInt &Out,UINT len)
{
    CHECK( len>0 && len<=BI_MAXLEN )

	Out = Zero;
    srand(GetTickCount());
    for(UINT i=0; i<len; ++i)
	{
        Out.bit[i] = rand()%BI_BASE;
	}

    Out.bit[0] |= 1;
    Out.bit[len-1] |= 1;
	Out.len = len;

	return true;
}
///////////////////////////////////////////////////////////////////////////////
// End of Files
///////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费观看高清完整版在线| 国产精品福利在线播放| 欧美日本在线播放| av高清不卡在线| 激情久久五月天| 日韩在线一区二区| 亚洲电影激情视频网站| 自拍偷拍亚洲激情| 国产视频一区在线观看| 精品欧美一区二区久久| 欧美一区二区三区在线观看视频| 99久久99久久久精品齐齐| 国产在线不卡一区| 精品一区二区免费| 激情五月激情综合网| 麻豆精品一区二区| 久久精品理论片| 久久爱www久久做| 国产最新精品精品你懂的| 国产一区二区三区久久久| 国产在线播精品第三| 国产综合久久久久久鬼色| 国产精品一色哟哟哟| 高清在线成人网| 成人福利电影精品一区二区在线观看| 成人性生交大片免费看视频在线| 成人精品国产免费网站| 色噜噜偷拍精品综合在线| 欧美日韩一区三区| 精品久久久久香蕉网| 欧美国产综合一区二区| 亚洲精品欧美综合四区| 免费观看成人av| 成人av网站免费| 在线播放欧美女士性生活| 久久综合九色综合97婷婷女人| 欧美国产日产图区| 日韩国产成人精品| 99视频精品免费视频| 欧美色视频一区| 久久久综合激的五月天| 亚洲图片自拍偷拍| 黄色资源网久久资源365| 欧美日韩在线播放三区四区| 久久久久久99精品| 日韩av一区二| 欧美日韩中文字幕一区二区| 亚洲欧洲美洲综合色网| 国产精品2024| 亚洲精品在线观看网站| 天堂在线一区二区| 欧美日韩国产首页在线观看| 欧美激情中文不卡| 国产精品99久| 欧美成人精品高清在线播放| 日韩在线卡一卡二| 制服丝袜亚洲精品中文字幕| 一区二区三区高清不卡| 99久久伊人网影院| 国产精品理论片| 99久久精品费精品国产一区二区| 欧美国产丝袜视频| 97久久超碰精品国产| 日韩美女久久久| 99久久伊人精品| 亚洲精品久久久久久国产精华液| 91丨porny丨中文| 亚洲国产一区二区视频| 欧美日韩色一区| 久久国产精品第一页| 日韩免费视频一区二区| 国产麻豆精品久久一二三| 国产亚洲成年网址在线观看| 99在线精品观看| 亚洲va在线va天堂| 日韩精品一区二区三区在线观看| 国产综合久久久久影院| 国产精品丝袜91| 欧美日韩精品二区第二页| 日本大胆欧美人术艺术动态| 久久久美女毛片| 色综合久久天天| 麻豆久久久久久久| 亚洲丝袜制服诱惑| 91精品欧美久久久久久动漫| 国产剧情在线观看一区二区| 国产精品白丝jk黑袜喷水| 亚洲欧美一区二区三区极速播放| 欧美老肥妇做.爰bbww| 丁香五精品蜜臀久久久久99网站 | 亚洲视频1区2区| 欧美一级高清片| 91免费国产视频网站| 捆绑紧缚一区二区三区视频| 国产精品欧美一区二区三区| 精品视频1区2区| 成人自拍视频在线| 麻豆视频一区二区| 亚洲综合一区在线| 国产无一区二区| 欧美成人精品3d动漫h| 欧美色手机在线观看| 99精品国产99久久久久久白柏| 精品一区二区在线视频| 樱花草国产18久久久久| 中文字幕一区二区三区在线不卡| 日韩亚洲欧美中文三级| 欧美三电影在线| 欧美亚洲丝袜传媒另类| 91色在线porny| 成人美女视频在线看| 国产精一品亚洲二区在线视频| 男女视频一区二区| 亚洲国产欧美另类丝袜| 亚洲永久精品国产| 亚洲男人的天堂在线观看| 国产精品久久久久久久久搜平片 | 91在线码无精品| 色综合久久久网| 欧美亚洲自拍偷拍| 欧美日韩一区二区欧美激情| 欧美日韩亚洲国产综合| 欧美日韩国产一区| 91精品国产丝袜白色高跟鞋| 这里只有精品99re| 久久色在线观看| 综合久久久久综合| 亚洲午夜精品久久久久久久久| 成人av综合一区| 在线观看视频91| 欧美mv日韩mv| 亚洲桃色在线一区| 日韩国产在线观看| 国产高清亚洲一区| 色综合天天在线| 欧美一区二区三区在线| 国产日产精品1区| 亚洲一区av在线| 蜜臀av亚洲一区中文字幕| 成人免费电影视频| 欧美一区二区三区免费视频 | 国产xxx精品视频大全| 欧美伊人久久大香线蕉综合69 | 奇米影视一区二区三区| 久久精品国产久精国产爱| 日韩国产一二三区| 国产69精品久久99不卡| 91黄色免费观看| 精品国产乱码久久久久久浪潮| 久久久亚洲精华液精华液精华液| 国产精品青草久久| 有坂深雪av一区二区精品| 黄网站免费久久| 国产亚洲一二三区| 成人avav在线| 一区二区三区国产| 欧美日本高清视频在线观看| 亚洲成人一区在线| 精品精品国产高清一毛片一天堂| 久久精品999| 日韩毛片在线免费观看| 欧美日韩视频在线观看一区二区三区| 午夜电影久久久| 欧美男女性生活在线直播观看| 久久美女艺术照精彩视频福利播放| 免费在线观看不卡| 精品国产乱码久久久久久图片 | 欧美成人女星排名| 日韩成人免费在线| 欧美一卡2卡三卡4卡5免费| 蜜臀a∨国产成人精品| 欧美变态tickle挠乳网站| 黄色小说综合网站| 国产欧美一区二区在线观看| 国产99久久久精品| 国产精品美女一区二区| 91久久精品一区二区| 午夜成人免费视频| 日韩免费观看高清完整版在线观看 | 亚洲va天堂va国产va久| 欧美一区二区三区喷汁尤物| 国产成人综合精品三级| 亚洲欧美激情视频在线观看一区二区三区| 色爱区综合激月婷婷| 毛片不卡一区二区| 国产精品剧情在线亚洲| 欧美午夜寂寞影院| 国产一区二区不卡在线| 一区二区高清免费观看影视大全| 欧美丰满一区二区免费视频| 国产一区视频网站| 午夜亚洲福利老司机| 国产精品久久久久一区二区三区 | 日韩一区二区三| 97se亚洲国产综合在线| 免费在线观看视频一区| 亚洲综合在线视频| 国产精品久久久久影院老司| 久久久久久久久久看片| 精品区一区二区|