首页
社区
课程
招聘
[旧帖] [求助] 0.00雪花
发表于: 2012-10-13 15:49 787

[旧帖] [求助] 0.00雪花

2012-10-13 15:49
787
我在看雪论坛上下载了一个RSA算法的大数库,里面的除法运算没看懂,希望大神指点下:
CBigInt CBigInt::Div(CBigInt& A)
{
    if(A.m_nLength==1)return Div(A.m_ulValue[0]);
    CBigInt X,Y,Z;
    unsigned i,len;
    unsigned __int64 num,div;
    Y.Mov(*this);
    while(Y.Cmp(A)>=0)
    {      
                div=Y.m_ulValue[Y.m_nLength-1];
                num=A.m_ulValue[A.m_nLength-1];
                len=Y.m_nLength-A.m_nLength;
                if((div==num)&&(len==0)){X.Mov(X.Add(1));break;}
                if((div<=num)&&len){len--;div=(div<<32)+Y.m_ulValue
                                [Y.m_nLength-2];}
                div=div/(num+1);
                Z.Mov(div);
                if(len)
                {
                        Z.m_nLength+=len;
                        for(i=Z.m_nLength-1;i>=len;i--)Z.m_ulValue[i]  
                                                =Z.m_ulValue[i-len];
                        for(i=0;i<len;i++)Z.m_ulValue[i]=0;
                }
                X.Mov(X.Add(Z));
        Y.Mov(Y.Sub(A.Mul(Z)));
    }
    return X;
}
一直都没搞明白
                if(len)
                {
                        Z.m_nLength+=len;
                        for(i=Z.m_nLength-1;i>=len;i--)Z.m_ulValue[i]  
                                                =Z.m_ulValue[i-len];
                        for(i=0;i<len;i++)Z.m_ulValue[i]=0;
                }
这句是干嘛的???
他的大数结构是这样的
unsigned m_nLength;//大数在2^32进制下的长度  
unsigned long m_ulValue[BI_MAXLEN];//用数组记录大数在2^32进制下每一位的值 从低位到高位

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//