快发出去吧好的

/*rsa.c RSA绠楁硶瀹炵幇*/
#include <stddef.h>
#include <stdio.h>
#include <sys/time.h>
#include <linux/types.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <string.h>
#include <malloc.h>

#define L 100
#define W 512
#define BigNumLength 2000                        //瀛樻斁y*a鍚庣殑瀛楃澶у皬
#define c_length 1000              //瀵嗘枃瀛樻斁闀垮害

int k,z=1,x1,S1=0,S2=1,S=0;
int digit;//澶ф暟鐨勪綅鏁? 
int ys[c_length]={},a1[c_length]={};    //瀛樺偍鐨勮В瀵嗙殑y鍜宎
int y[c_length]={},a[c_length]={};     //瀛樺偍鐨勫姞瀵嗙殑y鍜宎
int BigNumSquare1[BigNumLength]={},ciphertext[c_length]={},plaintext[c_length]={};  

double VAR=0,VAR1[L],VAR2[L];          
int A[W],B[L][W],C[W],D[W],Q[L],X[L][W],Y[L][W];
int x[1000],y2[1000],z1[1000],m[1000];//琚櫎鏁?  闄ゆ暟  鍟?  浣欐暟  

int n[155]={1,0,9,6,9,3,8,6,5,6,1,8,3,3,0,7,3,0,3,2,7,3,5,9,5,7,5,1,0,8,7,4,0,4,3,6,9,8,5,4,6,6,4,0,9,6,3,4,5,9,5,0,1,5,3,4,8,6,0,4,1,7,5,3,5,5,6,1,2,7,4,5,5,6,3,9,0,8,9,3,0,1,5,5,6,0,9,1,9,5,5,8,6,3,7,6,0,1,0,3,6,3,5,7,1,3,8,5,0,0,5,5,6,6,8,2,2,2,3,8,5,9,8,6,1,3,4,9,3,3,6,3,4,7,2,1,4,4,8,5,3,2,1,1,2,1,8,5,1,0,8,7,6,5,7};
int key[512]={0,0,0,1,0,0,1,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,0,1,0,0,1,1,0,0,1,1,0,1,0,0,0,1,0,1,1,0,0,1,0,0,1,1,0,1,1,1,0,1,1,0,0,0,1,0,1,0,0,0,0,1,1,1,1,0,1,0,1,1,1,1,1,0,1,1,0,1,0,1,1,0,0,0,1,0,1,1,0,0,0,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,0,0,1,1,1,1,0,1,1,0,1,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,0,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,0,0,1,0,1,1,0,1,0,1,0,1,1,1,0,1,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,1,0,0,0,1,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,1};
int key1[17]={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1};
/*int n[5]={1,6,6,3,7};
int key[14]={1,1,1,0,0,0,0,1,1,1,0,1,0,1};
int key1[5]={1,0,0,0,1};*/
int key2[512]={1,0,1,1,0,0,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,0,1,0,0,0,1,0,1,1,0,0,1,0,0,1,1,0,1,1,1,0,1,1,0,0,0,1,0,1,0,0,0,0,1,1,1,1,0,1,0,1,1,1,1,1,0,1,1,0,1,0,1,1,0,0,0,1,0,1,1,0,0,0,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,0,0,1,1,1,1,0,1,1,0,1,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,0,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,0,0,1,0,1,1,0,1,0,1,0,1,1,1,0,1,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,1,0,0,0,1,1,1,0,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,1};
int key3[512]={1,1,0,1,0,0,1,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,0,1,0,0,1,1,0,0,1,1,0,1,0,0,0,1,0,1,1,0,0,1,0,0,1,1,0,1,1,1,0,1,1,0,0,0,1,0,1,0,0,0,0,1,1,1,1,0,1,0,1,1,1,1,1,0,1,1,0,1,0,1,1,0,0,0,1,0,1,1,0,0,0,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,0,0,1,1,1,1,0,1,1,0,1,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,0,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,0,0,1,0,1,1,0,1,0,1,0,1,1,1,0,1,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,1,0,0,0,1,1,1,0,1,1,0,1,0,0,0,1,0,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,1};
__u64 rdtsc()
{
    __u32 lo,hi;
    
    __asm__ __volatile__
    (
     "rdtsc":"=a"(lo),"=d"(hi)
    );
    return (__u64)hi<<32|lo;    
}
void BigNum(int *y3,int *a2,int x1,int len1,int len2)    //len1,S2鏄痽鐨勯暱搴︼紝len2,S1鏄痑鐨勯暱搴?
{
    int i=0,j=0,k=0,len=0,k1=0;
    int REMAINDER=0,CARRY=0,SUM=0;
    int BigNumSquare[BigNumLength]={},y4[BigNumLength]={},a3[BigNumLength]={}; 
    //printf("y0=%d\n",y[0]);
    //printf("a2!=%d\n",a2);
    /*for(int i = 0; i < len2;i++)
    {
        printf("-----------%d",a2[i]);
    }
    printf("\n");
    for(int i = 0; i < len1;i++)
    {
        printf("***********%d",y3[i]);
    }*/
    if(x1==1)
    {
        for(int i=0;i<len1;i++)
        {
            y4[i]=y3[i];
            //printf("-----------------%d",y4[i]);
        }
        //printf("\n");
        for(int i=0;i<len2;i++)
        {
            a3[i]=a2[i];
            //printf("-----------------%d",a3[i]);
        }
        //printf("y0=%d\n",y[0]);
        //y3=ys;
        //a2=a1;
    }
    else if(x1==0)
    {
        for(int i=0;i<len1;i++)
        {
            y4[i]=y3[i];
            //printf("-----------------%d",y4[i]);
        }
        //printf("\n");
        for(int i=0;i<len2;i++)
        {
            a3[i]=a2[i];
            //printf("-----------------%d",a3[i]);
        }
        //y3=a1;
        //a2=a1;
    }
    else if(x1==2)
    {
        for(int i=0;i<len1;i++)
        {
            y4[i]=y3[i];
            //printf("-----------------%d",y4[i]);
        }
        //printf("\n");
        for(int i=0;i<len2;i++)
        {
            a3[i]=a2[i];
            //printf("-----------------%d",a3[i]);
        }
    }
    else if(x1==3)
    {
        for(int i=0;i<len1;i++)
        {
            y4[i]=y3[i];
            //printf("--------------------------------------%d",y4[i]);
        }
        //printf("\n");
        for(int i=0;i<len2;i++)
        {
            a3[i]=a2[i];
            //printf("**************************************%d",a3[i]);
        }
    }
    //len1=S2;
    //len2=S1;
    //printf("%d,%d\n",len2,len1);
    len=abs(len2-len1);
    //printf("%d\n",len);
    
    if(len1>len2)
    {
        //printf("_________________________________________________________________________\n");
        y3=(int *)malloc(len1*sizeof(int));
        a2=(int *)malloc(len1*sizeof(int));
        for(i=0;i<len1;i++)
        {
            y3[i]=y4[i];
            //printf("%d",y3[i]);
        }    
        for(i=len1-1;i>0;i--)
        {    
            a2[i]=a3[i-len];
        }
        for(i=0;i<len;i++)
        {
            a2[i]=0;
        }
        /*for(int i=0;i<S1;i++)
        {
            printf("%d",a2[i]);
        }*/
        //k=(int)sizeof(BigNum1)/4-1;
        k=len1-1;
        k1=k;
    }
    else
    { 
        if(len2>len1)
        {
            y3=(int *)malloc(len2*sizeof(int));
            a2=(int *)malloc(len2*sizeof(int));
            for(i=0;i<len2;i++)
            {
                a2[i]=a3[i];
                //printf("------------------------%d",a2[i]);
            }
            //printf("\n");    
            for(i=len2-1;i>0;i--)
            {    
                y3[i]=y4[i-len];
            }
            for(i=0;i<len;i++)
            {
                y3[i]=0;
            }
            /*for(int i=0;i<len2;i++)
            {
                printf("************************%d",y3[i]);
            }*/
            k=len2-1;
            k1=k;    
        }
        else
        {
             if(len1==len2)
            {
                //printf("_________________________________________________________________________\n");
                /*for(i=0;i<len1;i++)
                {
                    y4[i]=y3[i];
                    //printf("--------------------------------------%d",y4[i]);
                    //printf("**************************************%d",y3[i]);
                }
                //printf("\n");
                for(i=0;i<len2;i++)
                {
                    a3[i]=a2[i];
                    //printf("**************************************%d",a3[i]);
                }*/                
                y3=(int *)malloc(len1*sizeof(int));
                a2=(int *)malloc(len2*sizeof(int));
                if(y3==NULL)
                {   // 妫?鏌ュ唴瀛樺垎閰嶆槸鍚︽垚鍔?
                    printf("Unable to allocate memory.\n");
                    exit(1);
                }
                /*for(i=0;i<len1;i++)
                {                    
                    printf("--------------------------------------%d",y4[i]);
                }
                printf("\n");
                for(i=0;i<len2;i++)
                {
                    printf("**************************************%d",a3[i]);
                }*/    
                for(i=0;i<len2;i++)
                {
                    a2[i]=a3[i];
                    //printf("------------------------%d",a2[i]);
                }
                //printf("\n");    
                for(i=0;i<len1;i++)
                {    
                    y3[i]=y4[i];
                    //printf("------------------------%d",y3[i]);
                }
                k=len1-1;
                k1=k;
                //printf("y0k=%d\n",y[0]);
            }    
        }
    }
    //printf("璇疯緭鍑簁鍜宬1鐨勫?煎垎鍒负:%d,%d\n",k,k1);
    while (k>=0)
    {
        SUM=0;
        
        for (i=k,j=k1;j>=k;i++,j--)
            SUM+=y3[i]*a2[j];

        //printf("SUM=%d\n",SUM);
        //getchar();

        SUM=SUM+CARRY;
        //printf("SUM=%d\n",SUM);
        CARRY=SUM/10;
        
        REMAINDER=SUM%10;

        BigNumSquare[S++]=REMAINDER;
        //printf("REMAINDER=%d\n",REMAINDER);
        /*for(i=0;i<S;i++)
        {
            printf("B[%d]=%d\n", i,BigNumSquare[i]);
        }*/
        k--;
    }
    //printf("S=%d\n", S);
    //printf("CARRY=%d\n", CARRY);
    k=k1-1;
    //printf("y0k1=%d\n",y[0]);
    while (k>=0)
    {
    
        SUM=0;

        for (i=0,j=k;i<=k;i++,j--)
            SUM+=y3[i]*a2[j];

        //printf("sum=%d\n",SUM);
        SUM=SUM+CARRY;

        CARRY=SUM/10;

        REMAINDER=SUM%10;

        BigNumSquare[S++]=REMAINDER;
        //printf("REMAINDER1=%d\n",REMAINDER);
        /*for(i=0;i<S;i++)
        {
            printf("B[%d]=%d\n", i,BigNumSquare[i]);
        }*/
        k--;
    }
    //printf("S=%d\n", S);
    //printf("y0k2=%d\n",y[0]);
    while(1)
    {
        if(CARRY==0)
            break;
        
        REMAINDER=CARRY%10;
        CARRY=CARRY/10;

        BigNumSquare[S++]=REMAINDER;
    }

    //printf("THE SOURCE BIGNUMBER1 IS:\n");

    /*for(i=0;i<=k1;i++)
    {
        printf("B[%d]=%d\n", i,y3[i]);
    }*/
    //printf("THE SOURCE BIGNUMBER2 IS:\n");
    /*for(i=0;i<=k1;i++)
    {
        //printf("B[%d]=%d\n", i,a2[i]);
    }*/
    //printf("THE RESULT of BIGNUMBER1*BIGNUMBER2 is:!!!!\n");
    //printf("S鐨勫?间负:%d\n", S);
    for(i=S-1;i>=0;i--)
    {
        BigNumSquare1[S-1-i]=BigNumSquare[i];
        //printf("%d",BigNumSquare1[S-1-i]);
    }
    //printf("\n");
    /*for(i=0;i<S;i++)
    {
        if(BigNumSquare1[i]==0)
            S--;
            k2++;
        
    }
    //printf("S鐨勫?间负:%d\n", S);
    //printf("k2鐨勫?间负:%d\n", k2);
    for(i=0;i<S;i++)
    {
        BigNumSquare1[i]=BigNumSquare1[k2-1+i];
        //printf("%d",BigNumSquare1[i]);    
    }*/
    //printf("\n");
    //printf("\n");
    //printf("y0k3=%d\n",y[0]);
    //printf("ya=%d\n",y);
    //printf("a2=%d\n",a2);
    //printf("a8=%d\n",a8);
    free(y3);
    free(a2);
}
void sub(int x[],int y2[],int len1,int len2)//澶ф暟鍑忔硶   
{  
    int i;  
    for(i=0;i<len1;i++)  
    {  
        if(x[i]<y2[i])  
        {  
            x[i]=x[i]+10-y2[i];  
            x[i+1]--;  
        }  
        else  
            x[i]=x[i]-y2[i];  
    }  
    for(i=len1-1;i>=0;i--)//鍒ゆ柇鍑忔硶缁撴潫涔嬪悗锛岃闄ゆ暟鐨勪綅鏁?   
    {  
        if(x[i])  
        {   
            digit=i+1;  
            break;           
        }   
    }  
}  
int judge(int x[],int y2[],int len1,int len2)  
{  
    int i;  
    if(len1<len2)  
        return -1;  
    if(len1==len2)//鑻ヤ袱涓暟浣嶆暟鐩哥瓑   
    {  
        for(i=len1-1;i>=0;i--)  
        {  
            if(x[i]==y2[i])//瀵瑰簲浣嶇殑鏁扮浉绛?   
                continue;  
            if(x[i]>y2[i])//琚櫎鏁? 澶т簬 闄ゆ暟锛岃繑鍥炲?间负1   
                return 1;  
            if(x[i]<y2[i])//琚櫎鏁? 灏忎簬 闄ゆ暟锛岃繑鍥炲?间负-1   
                return -1;  
        }  
        return 0;//琚櫎鏁? 绛変簬 闄ゆ暟锛岃繑鍥炲?间负0   
    }     
}
int mod(int aa[],int x1)  
{  
    int i,j=0,k1=0,temp,ys1=0,k2=0;  
    int len1,len2,len;//len涓や釜澶ф暟浣嶆暟鐨勫樊鍊?  
    //printf("B2mod-----aa=%d\n",aa);
    //printf("yamod=%d\n",y); 
    //printf("-------------%d,%d,%d",S1,S2,S);
    /*for(int i =0;i<S1;i++)
    {
        printf("-----%d",aa[i]);
    }
    printf("\n");
    for(int i =0;i<S2;i++)
    {
        printf("*****%d",y[i]);
    }*/
    if(x1==1)
    {
        /*for(int i = 0; i< S1;i++)
        {
            printf("璇疯緭鍑轰紶鍏ョ殑瀵嗘枃鐨勫?间负%d",aa[i]);
        }*/
        //printf("B1-----aa=%d\n",aa);
        BigNum(ys,aa,x1,S2,S1);
        //printf("B2-----aa=%d\n",aa);
        //printf("ya=%d\n",y);
        
        /*for(int i =0;i<S1;i++)
        {
            printf("B-----a1:%d",aa[i]);
        }*/
    }
    else 
    {
        if(x1==0)
        {
            /*for(int i = 0; i< S1;i++)
            {
                printf("璇疯緭鍑轰紶鍏ョ殑瀵嗘枃鐨勫?间负%d",aa[i]);
            }*/
            BigNum(aa,aa,x1,S1,S1); 
        } 
        else 
        {    
            if(x1==2)
            {
                /*for(int i = 0; i< S1;i++)
                {
                    printf("璇疯緭鍑轰紶鍏ョ殑鏄庢枃鐨勫?间负%d",aa[i]);
                }
                for(int i = 0; i< S2;i++)
                {
                    printf("璇疯緭鍑轰紶鍏ョ殑y鐨勫?间负%d",y[i]);
                }*/
                BigNum(y,aa,x1,S2,S1); 
            } 
            else 
            {    
                if(x1==3)
                {
                    /*for(int i = 0; i< S1;i++)
                    {
                        printf("璇疯緭鍑轰紶鍏ョ殑鏄庢枃鐨勫?间负%d",aa[i]);
                    }*/
                    BigNum(aa,aa,x1,S1,S1);  
                }
            }
        }
    }    
    //len1=(int)sizeof(BigNumSquare1)/4;//琚櫎鏁颁綅鏁? 
    //printf("%d\n",S);
    /*for(int i=0;i<S;i++)
    {
        printf("----------------------%d",BigNumSquare1[i]); 
    }*/
    
    //printf("璇疯緭鍑簂en2鐨勫?间负锛?%d\n",len2);
    //len3=S;
    len1=S; 
    for(i=0;i<len1;i++)//灏嗗瓧绗︿覆涓悇涓厓绱犲?掑簭鍌ㄥ瓨鍦ㄦ暟缁勪腑   
    {    
        //x[i]=BigNumSquare1[i];
        if(BigNumSquare1[i]==0)
        {
            S--;
            k2++;    
        }
        else if(BigNumSquare1[i]!=0)
        break;
    }
    //printf("璇疯緭鍏鐨勫?间负锛?%d,k2=%d\n",S,k2);
    len2=(int)sizeof(n)/4;//闄ゆ暟浣嶆暟
    len1=S; 
        
    for(i=len1-1,j=0;i>=0;i--)//灏嗗瓧绗︿覆涓悇涓厓绱犲?掑簭鍌ㄥ瓨鍦ㄦ暟缁勪腑   
    {    
        x[j++]=BigNumSquare1[k2+i]; 
        //x[j++]=BigNumSquare1[i];
    }
    /*for(int j=0;j<len1;j++)
    {
        printf("%d",x[j]);
    }
    printf("\n");*/
    k2=0;
    for(i=len2-1,k1=0;i>=0;i--)  
    {
        y2[k1++]=n[i];
    }
    /*for(int k1=0;k1<len2;k1++)
    {
        printf("%d",y2[k1]);
    } */             
    if(len1<len2)//褰撹闄ゆ暟浣嶆暟灏忎簬闄ゆ暟浣嶆暟鏃?   
    {  
        for(i=len1-1;i>=0;i--)
        {    
            if(x1==1)
            {
                ys[len1-1-i]=x[i];
                //ys[i]=BigNumSquare1[i];
                //printf("%d",ys[i]);
            }
            else 
            {
                if(x1==0)
                {
                    a1[len1-1-i]=x[i];
                    //a1[i]=BigNumSquare1[i];
                    //printf("%d",a1[i]);
                }
                else
                { 
                    if(x1==2)
                    {
                        y[len1-1-i]=x[i];
                        //y[i]=BigNumSquare1[i];
                        //printf("~~~~~%d",y[i]);
                    }
                    else 
                    {
                        if(x1==3)
                        {
                            a[len1-1-i]=x[i];
                            //a[i]=BigNumSquare1[i];
                            //printf("%d",a[i]);
                        }
                    }
                }
            }
        } 
        /*for(int i=0;i<S2;i++)
        {
            printf("%d",y[i]); 
        }*/ 
        //printf("%d",S);
        if(x1==1) //S1涓篴鐨勯暱搴︼紝S2涓簓鐨勯暱搴?
        {
            S2=S;
        }
        else if(x1==0)
        {    
            S1=S;
        }
        else if(x1==2)
        {
            S2=S; //鍥犱负S2涓瓨鍌ㄧ殑y鐨勯暱搴︼紝璧嬪?煎悗鐢ㄤ簬涓嬩竴娆*a鐨勮绠?    
        }
        else if(x1==3)
        {
            S1=S;
        }
        //printf("-------------%d,%d,%d",S1,S2,S);
    }  
    else //褰撹闄ゆ暟浣嶆暟 澶т簬鎴栬?? 闄ゆ暟浣嶆暟鏃?  
    {  
        len=len1-len2;//涓や釜澶ф暟浣嶆暟鐨勫樊鍊?  
           for(i=len1-1;i>=0;i--)//灏嗛櫎鏁板悗琛ラ浂锛屼娇寰椾袱涓ぇ鏁颁綅鏁扮浉鍚屻?傝闄ゆ暟锛?4541543329 闄ゆ暟锛?98745,鍔犻浂鍚?:9874500000   
        {  
            if(i>=len)  
                y2[i]=y2[i-len];  
            else  
                y2[i]=0; 
            /*if(i>len)  
                y2[i]=0;  
            else  
                y2[i]=y2[i];*/ 
        }
        /*for(int j=0;j<len1;j++)
        {
                printf("----------%d",x[j]);
        } 
            printf("\n");
        for(int k1=0;k1<len2;k1++)
        {
                printf("----------%d",y2[k1]);
        }*/               
        len2=len1;//灏嗕袱涓ぇ鏁版暟浣嶇浉鍚?         
        digit=len1; //灏嗗師琚櫎鏁颁綅鏁拌祴鍊肩粰digit   
        for(j=0;j<=len;j++)  
        {  
            z1[len-j]=0; 
            //printf("璇疯緭鍑簁1鐨勫?间负锛?%d\n",k1); 
            while(((temp=judge(x,y2,len1,len2))>=0)&&digit>=k1)//鍒ゆ柇涓や釜鏁颁箣闂寸殑鍏崇郴浠ュ強浣嶆暟涓庨櫎鏁板師浣嶆暟鐨勫叧绯?   
            {  
                sub(x,y2,len1,len2); //澶ф暟鍑忔硶鍑芥暟                  
                z1[len-j]++;//鍌ㄥ瓨鍟嗙殑姣忎竴浣?  
                len1=digit;//閲嶆柊淇敼琚櫎鏁扮殑闀垮害  
                if(len1<len2&&y2[len2-1]==0)        
                len2=len1;//灏唋en1闀垮害璧嬬粰len2;                        
            }  
            if(temp<0)//鑻ヨ闄ゆ暟灏忎簬闄ゆ暟锛岄櫎鏁板噺灏忎竴浣嶃?備緥濡傦細琚櫎鏁帮細4541543329 闄ゆ暟锛?(鍘?)98745,(鍔犻浂鍚?)9874500000锛屽悗閫?涓?浣嶅悗:0987450000   
            {  
                for(i=1;i<len2;i++)  
                    y2[i-1]=y2[i];  
                y2[i-1]=0;  
                if(len1<len2)   
                    len2--;                                           
            }  
        }  
        //printf("鍟嗘槸锛?");  
        //for(i=len;i>0;i--)//鍘绘帀鍓嶇紑0   
        //{  
        //    if(z1[i])  
        //        break;  
        //}  
        //for(;i>=0;i--)  
        //printf("%d",z1[i]);  
        //printf("\n");  
        //printf("浣欐暟鏄細");  
        for(i=len1;i>0;i--)  
        {  
            if(x[i])  
                  break;  
        }
        for(;i>=0;i--)
        //for(;i>=0;i--)  
        {
            ys1++;
        }
        
        //printf("ys1:%d",ys1);
        /*for(int i=0;i<ys1;i++)
        {
                printf("%d",y[i]); 
        }*/
        if(x1==1) //S1涓篴鐨勯暱搴︼紝S2涓簓鐨勯暱搴?
        {
            S2=ys1;
            for(int i=0;i<S2;i++)
            {
                ys[i]=x[S2-1-i];
                //printf("~~~~~~~~~~~~~~~~~~~~~~~~~~%d",ys[i]);
            }
        }
        else if(x1==0)
        {    
            S1=ys1;
            for(int i=0;i<S1;i++)
            {
                a1[i]=x[S1-1-i];
            }
        }
        else if(x1==2)
        {
            S2=ys1;
            for(int i=0;i<S2;i++)
            {
                y[i]=x[S2-1-i];
            }
            //printf("------------ys1:%d",ys1);    
        }
        else if(x1==3)
        {
            S1=ys1;
            for(int i=0;i<S1;i++)
            {
                a[i]=x[S1-1-i];
            }
            //printf("------------ys1:%d",ys1);
        }
        ys1=0;
        //printf("\n");  
    } 
    //printf("--------------------------%d,%d,%d",S1,S2,S);
    /*for(int i=0;i<S;i++)
    {
        printf("%d",y[i]); 
    }*/
    //printf("-------------%d,%d,%d",S1,S2,S);
    S=0;
}
static int modexp(int *a12)     //a1褰㈠弬,浼犲叆鐨勬槸瀵嗘枃ciphertext
{          
    __u64 begin;
    __u64 end;
    int j=0,label=1,sum=0,t=0,t1=0;
    ys[0]=1;
    /*for(int i=0;i<S1;i++)
    {
           printf("----------%d",a12[i]); 
       }*/
       //printf("a12modexp=%d\n",a12);
    //printf("ymodexp=%d\n",y);
    for(int i = W-1; i>=0; i--)
    {
        if(key[i]==1)
        {
            if(label==1)
            {
                begin = rdtsc();
                mod(a12,1);      //ys = (ys*a1) % n; 
                end = rdtsc();
                t = end - begin;        
            }
            else
            {    
                begin = rdtsc();    
                mod(a1,1);                        //璇ュ嚱鏁颁細浣垮緱ys[]锛孊igNumSquare1[]锛屼骇鐢熷彉鍖?
                end = rdtsc();
                t = end - begin;
            }
            A[j] = t;                          //鏈?浣庝綅鍒版渶楂樹綅杩涜鏃堕棿瀛樺叆鐨?
            j++;
        }
        else
        {
            begin = rdtsc();                
                end = rdtsc();
                    t1 = end - begin;                                  
                A[j] = t1;
                j++;
        }
        //sum++;
        //printf("%d",sum);                //a = (a*a)%n;
        if(label==1){
        mod(a12,0);            //璇ュ嚱鏁颁細浣垮緱a1[]浜х敓鍙樺寲
        label=0;}
        else
        mod(a1,0);
    } 
    return *ys;   
}

static int modexp1(int *a11)    //a褰㈠弬,浼犲叆鐨勬槸鏄庢枃p2
{
    int t=1,sum=0;;
    y[0]=1;
    /*for(int i=0;i<S1;i++)
    {
        printf("----------%d",a11[i]); 
    }*/
    for(int i = 16; i>=0; i--)
    {
        if(key1[i]==1)
        {
            if(t==1)
                mod(a11,2);      //y = (y*a) % n; 
            else
                mod(a,2);    
        }
        /*for(int i=0;i<S1;i++)
            {
                printf("----------%d",a[i]); 
            }*/
        //printf("--------------%d",sum);
        sum++;
        if(t==1)
        {
            mod(a11,3);            //a = (a*a)%n;
            t=0;
        }
        else
        {
            /*for(int j=0;j<S1;j++)
            {
                printf("璇疯緭鍑篴鐨勫?间负锛?%d",a[j]);
            }*/
            mod(a,3);
        }
    }
    //printf("****************%d",*y);
    
    //printf("S:%d,S1:%d,S2:%d",S,S1,S2);
    return *y;
}
static int modexp2(int *a12)     //a1褰㈠弬,浼犲叆鐨勬槸瀵嗘枃ciphertext
{          
    __u64 begin;
    __u64 end;
    int j=0,label=1,sum=0,t=0,t1=0;
    ys[0]=1;
    /*for(int i=0;i<S1;i++)
    {
           printf("----------%d",a12[i]); 
       }*/
       //printf("a12modexp=%d\n",a12);
    //printf("ymodexp=%d\n",y);
    for(int i = W-1; i>=0; i--)
    {
        if(key2[i]==1)
        {
            if(label==1)
            {
                begin = rdtsc();
                mod(a12,1);      //ys = (ys*a1) % n; 
                end = rdtsc();
                t = end - begin;        
            }
            else
            {    
                begin = rdtsc();    
                mod(a1,1);                        //璇ュ嚱鏁颁細浣垮緱ys[]锛孊igNumSquare1[]锛屼骇鐢熷彉鍖?
                end = rdtsc();
                t = end - begin;
            }
            A[j] = t;                          //鏈?浣庝綅鍒版渶楂樹綅杩涜鏃堕棿瀛樺叆鐨?
            j++;
        }
        else
        {
            begin = rdtsc();                
                end = rdtsc();
                    t1 = end - begin;                                  
                A[j] = t1;
                j++;
        }
        //sum++;
        //printf("%d",sum);                //a = (a*a)%n;
        if(label==1){
        mod(a12,0);            //璇ュ嚱鏁颁細浣垮緱a1[]浜х敓鍙樺寲
        label=0;}
        else
        mod(a1,0);
    } 
    return *ys;   
}
static int modexp3(int *a12)     //a1褰㈠弬,浼犲叆鐨勬槸瀵嗘枃ciphertext
{          
    __u64 begin;
    __u64 end;
    int j=0,label=1,sum=0,t=0,t1=0;
    ys[0]=1;
    /*for(int i=0;i<S1;i++)
    {
           printf("----------%d",a12[i]); 
       }*/
       //printf("a12modexp=%d\n",a12);
    //printf("ymodexp=%d\n",y);
    for(int i = W-1; i>=0; i--)
    {
        if(key3[i]==1)
        {
            if(label==1)
            {
                begin = rdtsc();
                mod(a12,1);      //ys = (ys*a1) % n; 
                end = rdtsc();
                t = end - begin;        
            }
            else
            {    
                begin = rdtsc();    
                mod(a1,1);                        //璇ュ嚱鏁颁細浣垮緱ys[]锛孊igNumSquare1[]锛屼骇鐢熷彉鍖?
                end = rdtsc();
                t = end - begin;
            }
            A[j] = t;                          //鏈?浣庝綅鍒版渶楂樹綅杩涜鏃堕棿瀛樺叆鐨?
            j++;
        }
        else
        {
            begin = rdtsc();                
                end = rdtsc();
                    t1 = end - begin;                                  
                A[j] = t1;
                j++;
        }
        //sum++;
        //printf("%d",sum);                //a = (a*a)%n;
        if(label==1){
        mod(a12,0);            //璇ュ嚱鏁颁細浣垮緱a1[]浜х敓鍙樺寲
        label=0;}
        else
        mod(a1,0);
    } 
    return *ys;   
}
int Variance()
{
    
    double sum = 0,avgtime = 0;
    for(int i = 0; i < L; i++)
    {
        sum+=Q[i];
    }
    avgtime = sum/L;
    for(int i = 0; i < L; i++)
    {
        VAR = VAR + pow((Q[i]-avgtime),2);
    }
    //VAR=VAR/(L-1);
    printf("the realVAR is:     %.2f\n",VAR);
    printf("\n");
    return 0;
}
int VarianceA()
{
    //int n = 1;
    double V = 0,time = 0,avgtime = 0,total = 0;
    int E[10000];
    //for(int k = 0;k < W; k++)
    //{
        for(int i = 0; i < L; i++)
        {
            for(int j = 0; j < z+1; j++)
            {
                total+=X[i][j];
            }
            E[i]=Q[i]-total;
            time += E[i];
            total = 0;
        }
        avgtime = time/L;
        for(int i = 0; i < L; i++)
        {
            V+=pow((E[i]-avgtime),2);
        }
        V=V/(L-1);
        VAR1[z]=V;
        printf("the VAR1[%d] is:     %.2f\n",z,V);
    
        /*total = 0;
        time = 0;
        avgtime = 0;
        V = 0;*/
        //n++;
        printf("\n");
    //}
    return 0;
}

int VarianceB()
{
    //int n = 1;
    double V = 0,time = 0,avgtime = 0,total = 0;
    long F[10000];
    //Find the lowest order of each ciphertext
    //for(int k=0;k < W; k++)
    //{
        for(int i = 0; i < L; i++)
        {
            for(int j = 0; j < z+1; j++)
            {
                total+=Y[i][j];
            }
            F[i]=Q[i]-total;
            time += F[i];
            total = 0;
        }
        avgtime = time/L;
        for(int i = 0; i < L; i++)
        {
            V+=pow((F[i]-avgtime),2);
        }
        V=V/(L-1);
        VAR2[z] = V;
        printf("the VAR2[%d] is:     %.2f\n",z,V);
        /*total = 0;
        time = 0;
        avgtime = 0;
        V = 0;
        n++;*/
        printf("\n");
    //}
    return 0;
}
int arrytime()
{
    int p,p1[c_length]={},p2[c_length]={};
    int sum = 0;
    srand(time(NULL));
    //prikey.n[20] ={1,5,7,1,2,2,9,0,4,2,1,7,0,7,7,7,6,4,5,9};
    for (int i = 0; i < L; i++)
    {
        //p = rand()%100;
        p=12345;
        //printf("%d",p);
        while(p!=0)//灏唒laintext瀛樺叆鏁扮粍涓?
        {
            p1[S1]=p%10;
            p = p/10;    
            S1++;
        }
        //printf("S1鐨勫?间负锛?%d",S1);
        printf("the plain[%d] is:",i);
        for(int j=S1-1;j>=0;j--)
        {
            p2[S1-1-j]=p1[j];    
        }
        for(int j=0; j<S1;j++)
        {
            //printf("S1鐨勫?间负锛?%d",S1);
            printf("%d",p2[j]);    
        }
        printf("\n");
        //rsa_encipher(p2,ciphertext);    //鍔犲瘑
        modexp1(p2);    //鍔犲瘑
        printf("the ciphertext is:");
        for(int j=0;j<S2;j++)
        {
            ciphertext[j]=y[j];
            printf("%d",ciphertext[j]);
        }
        S1=S2;
        S2=1;
        //printf("S=%d,S1=%d,S2=%d",S,S1,S2);
        //rsa_decipher(ciphertext,plaintext);        //瑙e瘑
        modexp(ciphertext);
        printf("\n");
        printf("the plain is:");
        for(int j=0;j<S2;j++)
        {
            plaintext[j]=ys[j];
            printf("%d",plaintext[j]);
        }
        printf("\n");
        //printf("-----------------------------------------------------------------------------\n");
        for(int j =0; j < W; j++)
        {
            B[i][j] = A[j];
        }    
        S1=0;
        S2=1;
        for(int m=0;m<c_length;m++)
        {
            ys[m]=0;
            a1[m]=0;    //瀛樺偍鐨勮В瀵嗙殑y鍜宎
            y[m]=0;
            a[m]=0;     //瀛樺偍鐨勫姞瀵嗙殑y鍜宎
            BigNumSquare1[m]=0;
            ciphertext[m]=0;
            plaintext[m]=0;
            p1[m]=0;
            p2[m]=0; 
        }
    }    
    printf("\n");
    for(int i = 0; i < L; i++)
    {
        for(int j = 0; j < W; j++)
        {        
            if(B[i][j] > 10000000)
            {
                //printf("绗?%d琛岀%d鍒楀嚭鐜扮缇ょ偣锛?%d\n",i,j,B[i][j]);
                B[i][j] = B[i-1][j];
                if(i == 0)
                {
                    B[i][j] = B[i+1][j];
                }
            }                
        }
    }
    for(int i = 0; i < L; i++)
    {
        for(int j = 0; j < W; j++)
        {
            
            sum+=B[i][j];
            printf("%d\t",B[i][W-1-j]);

        }
        Q[i]=sum;
        sum = 0;
        printf("\n");
    }
    //Variance();
    
    return 0;
}
void arrytime1()
{    
    int p,p1[c_length]={},p2[c_length]={};
    int sum = 0;
    srand(time(NULL));
    for (int i = 0; i < L; i++)
    {
        //p = rand()%100;
        p=12345;
        while(p!=0)//灏唒laintext瀛樺叆鏁扮粍涓?
        {
            p1[S1]=p%10;
            p = p/10;    
            S1++;
        }
        //printf("S1鐨勫?间负锛?%d",S1);
        printf("the plain[%d] is:",i);
        for(int j=S1-1;j>=0;j--)
        {
            p2[S1-1-j]=p1[j];    
        }
        for(int j=0; j<S1;j++)
        {
            //printf("S1鐨勫?间负锛?%d",S1);
            printf("%d",p2[j]);    
        }
        printf("\n");
        //rsa_encipher(p2,ciphertext);    //鍔犲瘑
        modexp1(p2);    //鍔犲瘑
        printf("the ciphertext is:");
        for(int j=0;j<S2;j++)
        {
            ciphertext[j]=y[j];
            printf("%d",ciphertext[j]);
        }
        S1=S2;
        S2=1;
        //printf("S=%d,S1=%d,S2=%d",S,S1,S2);
        //rsa_decipher(ciphertext,plaintext);        //瑙e瘑
        //printf("ctarry=%d\n",ciphertext);
        //printf("yarry=%d\n",y);
        modexp2(ciphertext);
        printf("\n");
        printf("the plain is:");
        for(int j=0;j<S2;j++)
        {
            plaintext[j]=ys[j];
            printf("%d",plaintext[j]);
        }
        printf("\n");
        //printf("-----------------------------------------------------------------------------\n");
        for(int j =0; j < W; j++)
        {
            X[i][j] = A[j];
        }    
        S1=0;
        S2=1;
        for(int m=0;m<c_length;m++)
        {
            ys[m]=0;
            a1[m]=0;    //瀛樺偍鐨勮В瀵嗙殑y鍜宎
            y[m]=0;
            a[m]=0;     //瀛樺偍鐨勫姞瀵嗙殑y鍜宎
            BigNumSquare1[m]=0;
            ciphertext[m]=0;
            plaintext[m]=0;
            p1[m]=0;
            p2[m]=0; 
        }
    }    
    printf("\n");
    for(int i = 0; i < L; i++)
    {
        for(int j = 0; j < W; j++)
        {        
            if(X[i][j] > 10000000)
            {
                //printf("绗?%d琛岀%d鍒楀嚭鐜扮缇ょ偣锛?%d\n",i,j,B[i][j]);
                X[i][j] = X[i-1][j];
                if(i == 0)
                {
                    X[i][j] = X[i+1][j];
                }
            }                
        }
    }
    for(int i = 0; i < L; i++)
    {
        for(int j = 0; j < W; j++)
        {    
            printf("%d\t",X[i][W-1-j]);
        }
        printf("\n");
    }
    VarianceA();
}
void arrytime2()
{

    int p,p1[c_length]={},p2[c_length]={};
    int sum = 0;
    srand(time(NULL));
    for (int i = 0; i < L; i++)
    {
        //p = rand()%100;
        p=12345;
        while(p!=0)//灏唒laintext瀛樺叆鏁扮粍涓?
        {
            p1[S1]=p%10;
            p = p/10;    
            S1++;
        }
        //printf("S1鐨勫?间负锛?%d",S1);
        printf("the plain[%d] is:",i);
        for(int j=S1-1;j>=0;j--)
        {
            p2[S1-1-j]=p1[j];    
        }
        for(int j=0; j<S1;j++)
        {
            //printf("S1鐨勫?间负锛?%d",S1);
            printf("%d",p2[j]);    
        }
        printf("\n");
        //rsa_encipher(p2,ciphertext);    //鍔犲瘑
        modexp1(p2);    //鍔犲瘑
        printf("the ciphertext is:");
        for(int j=0;j<S2;j++)
        {
            ciphertext[j]=y[j];
            printf("%d",ciphertext[j]);
        }
        S1=S2;
        S2=1;
        //printf("S=%d,S1=%d,S2=%d",S,S1,S2);
        //rsa_decipher(ciphertext,plaintext);        //瑙e瘑
        //printf("ctarry=%d\n",ciphertext);
        //printf("yarry=%d\n",y);
        modexp3(ciphertext);
        printf("\n");
        printf("the plain is:");
        for(int j=0;j<S2;j++)
        {
            plaintext[j]=ys[j];
            printf("%d",plaintext[j]);
        }
        printf("\n");
        //printf("-----------------------------------------------------------------------------\n");
        for(int j =0; j < W; j++)
        {
            Y[i][j] = A[j];
        }    
        S1=0;
        S2=1;
        for(int m=0;m<c_length;m++)
        {
            ys[m]=0;
            a1[m]=0;    //瀛樺偍鐨勮В瀵嗙殑y鍜宎
            y[m]=0;
            a[m]=0;     //瀛樺偍鐨勫姞瀵嗙殑y鍜宎
            BigNumSquare1[m]=0;
            ciphertext[m]=0;
            plaintext[m]=0;
            p1[m]=0;
            p2[m]=0; 
        }
    }    
    printf("\n");
    for(int i = 0; i < L; i++)
    {
        for(int j = 0; j < W; j++)
        {        
            if(Y[i][j] > 10000000)
            {
                //printf("绗?%d琛岀%d鍒楀嚭鐜扮缇ょ偣锛?%d\n",i,j,Y[i][j]);
                Y[i][j] = Y[i-1][j];
                if(i == 0)
                {
                    Y[i][j] = Y[i+1][j];
                }
            }                
        }
    }
    for(int i = 0; i < L; i++)
    {
        for(int j = 0; j < W; j++)
        {    
            printf("%d\t",Y[i][W-1-j]);
        }
        printf("\n");
    }
    VarianceB();
}
void attack()
{
    int i,x = 0;
    double p;
    int M[512]={0,0,0,1,0,0,1,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,0,1,0,0,1,1,0,0,1,1,0,1,0,0,0,1,0,1,1,0,0,1,0,0,1,1,0,1,1,1,0,1,1,0,0,0,1,0,1,0,0,0,0,1,1,1,1,0,1,0,1,1,1,1,1,0,1,1,0,1,0,1,1,0,0,0,1,0,1,1,0,0,0,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,0,0,1,1,1,1,0,1,1,0,1,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,0,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,0,0,1,0,1,1,0,1,0,1,0,1,1,1,0,1,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,1,0,0,0,1,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,1};
    //printf("\n---------------------------------------------------------------------------------------------------------\n");
    for(int k =1;k<W-1;k++)
    {
        if(key2[W-1-k] == key3[W-1-k])
        {
            key2[W-1-k] = (key3[W-1-k]+1)%2;
        }
        for(int j = 0; j < W; j++)
        {
            printf("%d\t",key2[j]);
        }
        printf("\n");
        for(int j = 0; j < W; j++)
        {
            printf("%d\t",key3[j]);
        }
        printf("\n");
        arrytime1();
        printf("\n-----------------------------------------------------------------------------------------------------------------------------------\n");
        arrytime2();
        if(VAR1[k]<VAR2[k])
        {
            key3[W-1-k]=key2[W-1-k];
        }
        else
        {
            key2[W-1-k]=key3[W-1-k];
        }
        //printf("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n");
        //printf("%.2f\t%.2f\n",fabs(VAR-VAR1[j]),fabs(VAR-VAR2[j]));
        //printf("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n")
        for(int j = 0; j < W; j++)
        {
            printf("%d\t",key2[j]);
            
        }
        printf("\n");
        for(int j = 0; j < W; j++)
        {
            printf("%d\t",key3[j]);
        }
        printf("\n");
        printf("\n********************************************************************************************************************************************************\n");
        if(key2[W-1-k]==M[W-1-k])
        x++;
        z++;    
    }
    printf("璇疯緭鍑簒鐨勫?间负:%d\n",x);    
    p = (x+2)/512.00;
    printf("鐚滄祴姝g‘鐜囦负:%f\n",p);
}/**/
long sum(long a2[])
{
    long n,j,term;
    long sum = 0;
    for(j=0,n=W-1;j<W;j++,n--)
    if(n>=0)
    {
            term=a2[W-1-j]*pow(2,n);
            sum=sum+term;
       }
       return sum;
}
void main()
{
    arrytime();                     //杈撳嚭鐪熷疄绉侀挜鍔犺В瀵嗘槑鏂囧拰瀵嗘枃
    for(int j = 0; j<W;j++)
    {
        printf("%d\t",key[j]);
    }
    printf("\n---------------------------------------------------------------------------------------------------------\n");
    //arrytime1();
    //arrytime2();
    //Variance();
    attack();
    printf("\n*********************************************************************************************************\n");
    for(int i = 0; i < L; i++)
    {
        printf("%d\n",Q[i]);
    }/**/
    //free(y3);
    //free(a2);

    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值