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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rsa.c

?? rsa的c源程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include<stdio.h>
#include<string.h>
#include <stdlib.h>   
#include <time.h>  
#include <math.h>
#include <malloc.h>
#define MAX 100
#define LEN sizeof(struct slink)
void sub(int a[MAX],int b[MAX] ,int c[MAX] );

struct slink
{ 
	int  bignum[MAX];
	/*bignum[98]用來標(biāo)記正負(fù)號,1正,0負(fù)bignum[99]來標(biāo)記實際長度*/
    struct slink *next;
};

/*/--------------------------------------自己建立的大數(shù)運算庫-------------------------------------*/

void  print(  int a[MAX] )
   {
	   int i;
	   for(i=0;i<a[99];i++)
		   printf("%d",a[a[99]-i-1]);
	   printf("\n\n");
	   return;
   }


int  cmp(int a1[MAX],int a2[MAX])
{   int l1, l2;
	int i;
	l1=a1[99];
	l2=a2[99];
	if (l1>l2)
     return 1;
    if (l1<l2)
       return -1;
    for(i=(l1-1);i>=0;i--)
   {
	   if (a1[i]>a2[i])
		   return 1 ;
	   if (a1[i]<a2[i])
		   return -1;
   }
    return 0;
}

void mov(int a[MAX],int *b)
{
	int j;
		for(j=0;j<MAX;j++)
			b[j]=a[j];
		
		return ;
}


void mul(int a1[MAX],int a2[MAX],int *c)
{
 int i,j;
 int y;
 int x;
 int z;
 int w;
 int l1, l2;
	l1=a1[MAX-1];
	l2=a2[MAX-1];
	if (a1[MAX-2]=='-'&& a2[MAX-2]=='-')
		c[MAX-2]=0;
	else if (a1[MAX-2]=='-')
		c[MAX-2]='-';
	else if (a2[MAX-2]=='-')
		c[MAX-2]='-';
 for(i=0;i<l1;i++)
 {
  for(j=0;j<l2;j++)
  {
     x=a1[i]*a2[j];
     y=x/10;
     z=x%10;
     w=i+j;
     c[w]=c[w]+z;
     c[w+1]=c[w+1]+y+c[w]/10;
     c[w]=c[w]%10;
  }
 }
 w=l1+l2;
 if(c[w-1]==0)w=w-1;
 c[MAX-1]=w;
 return;
} 

void add(int a1[MAX],int a2[MAX],int *c)
{

 int i,l1,l2;
 int len,temp[MAX];
 int k=0;
l1=a1[MAX-1];
l2=a2[MAX-1];
if((a1[MAX-2]=='-')&&(a2[MAX-2]=='-'))
{
	c[MAX-2]='-';
}
else if (a1[MAX-2]=='-')
{
	mov(a1,temp);
	temp[MAX-2]=0;
	sub(a2,temp,c);
	return;
}
else if (a2[MAX-2]=='-')
{
	mov(a2,temp);
	temp[98]=0;
	sub(a1,temp,c);
	return;
}

	if(l1<l2)len=l1;
 else len=l2;
 for(i=0;i<len;i++)
 {
  c[i]=(a1[i]+a2[i]+k)%10;
  k=(a1[i]+a2[i]+k)/10;
 }
 if(l1>len)
 {
  for(i=len;i<l1;i++)
  {
   c[i]=(a1[i]+k)%10;
      k=(a1[i]+k)/10;   
  }
  if(k!=0)
  {
   c[l1]=k;
   len=l1+1;
  }
  else len=l1;
 }
 else
 {
  for(i=len;i<l2;i++)
  {
   c[i]=(a2[i]+k)%10;
   k=(a2[i]+k)/10;   
  }
  if(k!=0)
  {
   c[l2]=k;
   len=l2+1;
  }
  else len=l2;
 }
  c[99]=len;
  return;
} 


void sub(int a1[MAX],int a2[MAX],int *c)
{
 int i,l1,l2;
 int len,t1[MAX],t2[MAX];
 int k=0;
l1=a1[MAX-1];
l2=a2[MAX-1];
if ((a1[MAX-2]=='-') && (a2[MAX-2]=='-'))
{
	mov(a1,t1);
        mov(a2,t2);
	t1[MAX-2]=0;
        t2[MAX-2]=0;
	sub(t2,t1,c);
	return;
}
else if( a2[MAX-2]=='-')
{
	mov(a2,t2);
	t2[MAX-2]=0;
	add(a1,t2,c);
	return;
}
else if (a1[MAX-2]=='-')
{
	mov(a2,t2);
	t2[MAX-2]='-';
	add(a1,t2,c);
	return;
}

 if(cmp(a1,a2)==1)
 {
	 
	 len=l2;
 for(i=0;i<len;i++)
 {
	 if ((a1[i]-k-a2[i])<0)
 {
	 c[i]=(a1[i]-a2[i]-k+10)%10;
     k=1;
 }
     else 
	 {
		 c[i]=(a1[i]-a2[i]-k)%10;
	     k=0;
	 }
 }


  for(i=len;i<l1;i++)
  {
	  if ((a1[i]-k)<0)
 {
	 c[i]=(a1[i]-k+10)%10;
     k=1;
 }
     else 
	 {
		 c[i]=(a1[i]-k)%10;
	     k=0;
	 } 
  }
  if(c[l1-1]==0)/*使得數(shù)組C中的前面所以0字符不顯示了,如1000-20=0980--->顯示為980了*/
  {
	     len=l1-1;
		 i=2;
	  while (c[l1-i]==0)/*111456-111450=00006,消除0后變成了6;*/
	  {
	    len=l1-i;
			 i++;
	  }

  }

  else 
  {
	  len=l1;
  }
 }
else
if(cmp(a1,a2)==(-1))
 {
	 c[MAX-2]='-';
	 len=l1;
	 for(i=0;i<len;i++)
 {
	 if ((a2[i]-k-a1[i])<0)
 {
	 c[i]=(a2[i]-a1[i]-k+10)%10;
     k=1;
 }
     else 
	 {
		 c[i]=(a2[i]-a1[i]-k)%10;
	     k=0;
	 }
 }
  for(i=len;i<l2;i++)
  {
    if ((a2[i]-k)<0)
 {
	 c[i]=(a2[i]-k+10)%10;
     k=1;
 }
     else 
	 {
		 c[i]=(a2[i]-k)%10;
	     k=0;
	 }   
  }
  if(c[l2-1]==0)
  {  
   len=l2-1;
   i=2;
   while (c[l1-i]==0)
	  {
	    len=l1-i;
	    i++;
	  }

  }

  else len=l2;
 
 }

else if(cmp(a1,a2)==0)
   {
	   len=1;
	   c[len-1]=0;
   }
	c[MAX-1]=len;
return;
}

void  mod(int a[MAX],int b[MAX],int  *c)/*/c=a mod b//注意:經(jīng)檢驗知道此處A和C的數(shù)組都改變了。*/
{	int d[MAX];
	mov (a,d);
	while (cmp(d,b)!=(-1))/*/c=a-b-b-b-b-b.......until(c<b)*/
	{
		sub(d,b,c);
		mov(c,d);/*/c復(fù)制給a*/
	}	
	return ;
}


void  divt(int t[MAX],int b[MAX],int  *c ,int *w)/*//試商法//調(diào)用以后w為a mod b, C為a  div b;*/
{

	int a1,b1,i,j,m;/*w用于暫時保存數(shù)據(jù)*/
	int d[MAX],e[MAX],f[MAX],g[MAX],a[MAX];
	
	mov(t,a);
		for(i=0;i<MAX;i++)
	   e[i]=0;
	for(i=0;i<MAX;i++)
	   d[i]=0;
	for(i=0;i<MAX;i++) g[i]=0;
	a1=a[MAX-1];
    b1=b[MAX-1];
	if (cmp(a,b)==(-1))
	{
		c[0]=0;
		c[MAX-1]=1;
		mov(t,w);
		return;
	}
	else if (cmp(a,b)==0)
	{
		c[0]=1;
        c[MAX-1]=1;
		w[0]=0;
		w[MAX-1]=1;
		return;
	}
		m=(a1-b1);
    for(i=m;i>=0;i--)/*341245/3=341245-300000*1--->41245-30000*1--->11245-3000*3--->2245-300*7--->145-30*4=25--->25-3*8=1*/
	{
      for(j=0;j<MAX;j++)
        d[j]=0;
		d[i]=1;
		d[MAX-1]=i+1;
		mov(b,g);
        mul(g,d,e);

	
		while (cmp(a,e)!=(-1))
		{
			c[i]++;
			sub(a,e,f);
		    mov(f,a);/*f復(fù)制給g*/
		}

     for(j=i;j<MAX;j++)/*高位清零*/
        e[j]=0;
	
	}
	mov(a,w);
	if (c[m]==0) c[MAX-1]=m;
	else c[MAX-1]=m+1;

	return;
}

void mulmod(int a[MAX] ,int b[MAX] ,int n[MAX],int *m)/*解決 了 m=a*b mod n;*/
{
	int c[MAX],d[MAX];
	int i;
	for(i=0;i<MAX;i++)
		d[i]=c[i]=0;
	mul(a,b,c);
   divt(c,n, d,m);
   for(i=0;i<m[MAX-1];i++)
	 printf("%d",m[m[MAX-1]-i-1]);
     printf("\nm  length is :  %d \n",m[MAX-1]);
}

/*接下來的重點任務(wù)是要著手解決 m=a^p  mod n的函數(shù)問題。*/

void expmod(int a[MAX] ,int p[MAX] ,int n[MAX],int *m)
{
	int t[MAX],l[MAX],temp[MAX]; /*/t放入2,l放入1;*/
	int w[MAX],s[MAX],c[MAX],b[MAX],i;
	for(i=0;i<MAX-1;i++)
		b[i]=l[i]=t[i]=w[i]=0;
	t[0]=2;t[MAX-1]=1;
	l[0]=1;l[MAX-1]=1;
    mov(l,temp);
	mov(a,m);
    mov(p,b);

while(cmp(b,l)!=0)
{
    for(i=0;i<MAX;i++)
	w[i]=c[i]=0;

    divt(b,t,w,c);/*// c=p mod 2  w= p /2*/
	
    mov(w,b);/*//p=p/2*/

if(cmp(c,l)==0) /*/余數(shù)c==1*/
{
	for(i=0;i<MAX;i++)
	w[i]=0;

	mul(temp,m,w);

	mov(w,temp);
	
	for(i=0;i<MAX;i++)
	w[i]=c[i]=0;

	 divt(temp,n,w,c);/* /c為余c=temp % n,w為商w=temp/n */

	 mov(c,temp);
}

for(i=0;i<MAX;i++)
	s[i]=0;

mul(m,m,s);//s=a*a

for(i=0;i<MAX;i++)
	c[i]=0;

divt(s,n,w,c);/*/w=s/n;c=s mod n*/

mov (c,m);

}

for(i=0;i<MAX;i++)
	s[i]=0;

mul(m,temp,s);

for(i=0;i<MAX;i++)
	c[i]=0;

divt(s,n,w,c);

mov (c,m);/*余數(shù)s給m*/

m[MAX-2]=a[MAX-2];/*為后面的漢字顯示需要,用第99位做為標(biāo)記*/

return;
/*/k=temp*k%n;*/

}


int   is_prime_san(int p[MAX] )
{
 
   int i,a[MAX],t[MAX],s[MAX],o[MAX]; 
   for(i=0;i<MAX;i++)
	   s[i]=o[i]=a[i]=t[i]=0;
   t[0]=1;
   t[MAX-1]=1;
   a[0]=2;// { 2,3,5,7 }
   a[MAX-1]=1;

   sub(p,t,s);

   expmod ( a, s, p ,o);
       if ( cmp(o,t) != 0 ) 
	   {
	  return 0;
	   }

   a[0]=3;
   for(i=0;i<MAX;i++)  o[i]=0;

   expmod ( a, s, p ,o);
       if ( cmp(o,t) != 0 ) 	   
	   {
	  return 0;
	   }

      a[0]=5;
   for(i=0;i<MAX;i++)  o[i]=0;

   expmod ( a, s, p ,o);
   if ( cmp(o,t) != 0 ) 
   {	   
	  return 0;
   }

     a[0]=7;
   for(i=0;i<MAX;i++)  o[i]=0;

   expmod ( a, s, p ,o);

  if ( cmp(o,t) != 0 ) 
  {

	  return 0;
  }

  return 1;
}


int coprime(int e[MAX],int s[MAX]) /*//// 求兩個大數(shù)之間是否互質(zhì)////*/

{
    int a[MAX],b[MAX],c[MAX],d[MAX],o[MAX],l[MAX];
    int i;
	for(i=0;i<MAX;i++)
		l[i]=o[i]=c[i]=d[i]=0;
	o[0]=0;o[MAX-1]=1;
	l[0]=1;l[MAX-1]=1;
	mov(e,b);
	mov(s,a);
do
{
if(cmp(b,l)==0)
{
    return 1;
}
for(i=0;i<MAX;i++)
	c[i]=0;
 divt(a,b,d,c);
 mov(b,a);/*b--->a*/
 mov(c,b);/*c--->b*/

}while(cmp(c,o)!=0);
/*	printf("Ihey are  not coprime!\n");*/
return 0;
}


void prime_random(int *p,int *q)
{
	int i,k;
	time_t t; 
	 p[0]=1;
	 q[0]=3;
	 
//	p[19]=1;
//	q[18]=2;
	
	p[MAX-1]=10;
    q[MAX-1]=11;

 
	do
	{
			t=time(NULL);
    srand((unsigned long)t);
	for(i=1;i<p[MAX-1]-1;i++)
	{
	k=rand()%10;
	p[i]=k;
	}
	k=rand()%10;
	while (k==0)
	{
		k=rand()%10;
	}
	p[p[MAX-1]-1]=k;

	}while((is_prime_san(p))!=1);
		printf("素數(shù) p 為  : ");
    for(i=0;i<p[MAX-1];i++)
	{
	printf("%d",p[p[MAX-1]-i-1]);
	}
    printf("\n\n");
		do
	{
			t=time(NULL);
    srand((unsigned long)t);
	for(i=1;i<q[MAX-1];i++)
	{
	k=rand()%10;
	q[i]=k;
	}

	}while((is_prime_san(q))!=1);
		printf("素數(shù) q 為 : ");
    for(i=0;i<q[MAX-1];i++)
	{
	printf("%d",q[q[MAX-1]-i-1]);
	}
    printf("\n\n");
	return;
}
	
void  erand(int e[MAX],int m[MAX])
{
	int i,k;
	time_t t;
	e[MAX-1]=5;
	printf("隨機產(chǎn)生一個與(p-1)*(q-1)互素的 e :");
		do
	{
			t=time(NULL);
    srand((unsigned long)t);
	for(i=0;i<e[MAX-1]-1;i++)
	{
	k=rand()%10;
	e[i]=k;
	}
	while((k=rand()%10)==0)
		k=rand()%10;
	e[e[MAX-1]-1]=k;
	}while(coprime( e, m)!=1);
    for(i=0;i<e[MAX-1];i++)
	{
	printf("%d",e[e[MAX-1]-i-1]);
	}
    printf("\n\n");
	return ;
}

void rsad(int e[MAX],int g[MAX],int *d)
{
	int   r[MAX],n1[MAX],n2[MAX],k[MAX],w[MAX];
	int     i,t[MAX],b1[MAX],b2[MAX],temp[MAX];
	mov(g,n1);
	mov(e,n2);
	for(i=0;i<MAX;i++)
		k[i]=w[i]=r[i]=temp[i]=b1[i]=b2[i]=t[i]=0;
	b1[MAX-1]=0;b1[0]=0;/*/b1=0;*/
	b2[MAX-1]=1;b2[0]=1;/*/b2=1;*/
	while(1)
	{

	 for(i=0;i<MAX;i++)
				k[i]=w[i]=0;
		divt(n1,n2,k,w);/*/k=n1/n2;*/
	 for(i=0;i<MAX;i++)
		temp[i]=0;
		mul(k,n2,temp);/*/temp=k*n2;*/
    for(i=0;i<MAX;i++)
		r[i]=0;
        sub(n1,temp,r);

		if((r[MAX-1]==1) && (r[0]==0))/*/r=0*/
		{
			break;
		}
		else
		{
			mov(n2,n1);/*/n1=n2;*/
			mov( r,n2);/*/n2=r;*/
			mov(b2, t);/*/t=b2;*/
			for(i=0;i<MAX;i++)
		      temp[i]=0;
			mul(k,b2,temp);/*/b2=b1-k*b2;*/
			for(i=0;i<MAX;i++)
		      b2[i]=0;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日噜噜夜夜狠狠视频欧美人| 免费亚洲电影在线| 日韩欧美一级精品久久| av爱爱亚洲一区| 美洲天堂一区二卡三卡四卡视频| 国产精品久久久久永久免费观看| 91麻豆精品国产91久久久资源速度| 国产成人av一区二区三区在线| 亚洲国产精品影院| 国产精品狼人久久影院观看方式| 69堂国产成人免费视频| 91免费视频观看| 国产精品一区专区| 三级欧美韩日大片在线看| 国产精品对白交换视频| 久久精品亚洲乱码伦伦中文| 制服丝袜中文字幕亚洲| 欧美日韩日日夜夜| 91久久精品一区二区三| 成人黄色免费短视频| 精品午夜久久福利影院| 秋霞电影一区二区| 亚洲高清不卡在线| 一个色在线综合| 综合网在线视频| 国产三级精品在线| www国产亚洲精品久久麻豆| 欧美一区二区网站| 欧美精品在线视频| 欧美性三三影院| 在线视频一区二区免费| 色婷婷一区二区| 91丝袜美腿高跟国产极品老师| 国产精一区二区三区| 国内精品不卡在线| 国产一区二区0| 视频一区国产视频| 婷婷久久综合九色综合绿巨人| 亚洲伊人色欲综合网| 尤物av一区二区| 亚洲精品日韩综合观看成人91| 亚洲三级在线免费观看| 亚洲日本成人在线观看| 亚洲视频小说图片| 亚洲综合丝袜美腿| 亚洲国产欧美日韩另类综合 | 日本午夜一本久久久综合| 午夜视频在线观看一区二区三区| 亚洲午夜视频在线| 日韩精品一级中文字幕精品视频免费观看 | 91玉足脚交白嫩脚丫在线播放| 不卡在线观看av| 99精品一区二区| 91网站在线播放| 欧美性受xxxx| 欧美精品久久99| 日韩一级大片在线观看| 精品福利视频一区二区三区| 久久蜜臀中文字幕| 国产精品入口麻豆原神| 亚洲青青青在线视频| 亚洲一区二区中文在线| 日韩中文字幕不卡| 激情国产一区二区| 不卡av在线网| 欧美在线影院一区二区| 在线91免费看| 国产三级精品三级| 一区二区三区蜜桃| 免费人成在线不卡| 国产99一区视频免费| 色偷偷一区二区三区| 在线播放中文字幕一区| 2020国产精品自拍| 亚洲色大成网站www久久九九| 亚洲第一综合色| 国产精品一级在线| 91国在线观看| 日韩精品一区二| 国产精品福利一区| 日本美女视频一区二区| 国产不卡在线播放| 欧美色男人天堂| 久久久久久久久久久久久久久99| 亚洲天天做日日做天天谢日日欢| 视频在线观看一区二区三区| 丁香天五香天堂综合| 欧美日韩精品一区二区三区四区 | 久久久久97国产精华液好用吗 | 国产在线一区二区| 91在线观看污| 欧美大白屁股肥臀xxxxxx| 国产精品久线观看视频| 日韩和欧美一区二区| 99久久精品免费看国产免费软件| 欧美乱熟臀69xxxxxx| 欧美高清在线精品一区| 日av在线不卡| 一本久久a久久精品亚洲| 精品88久久久久88久久久| 综合婷婷亚洲小说| 国产精品91一区二区| 欧美日韩大陆在线| 国产精品国产三级国产有无不卡 | 欧美一区二区三区爱爱| 国产精品久久久一本精品| 久久99精品国产.久久久久久| 91小视频免费观看| 国产色产综合产在线视频| 日日夜夜免费精品视频| 99久久久无码国产精品| 久久久久亚洲蜜桃| 蜜桃av噜噜一区| 欧美色视频在线| 一区二区三区四区在线免费观看| 成人永久看片免费视频天堂| 日韩午夜小视频| 丝袜美腿一区二区三区| 日本久久一区二区三区| 国产精品网站在线观看| 国产高清不卡二三区| 精品国产伦理网| 久久精工是国产品牌吗| 欧美日本国产视频| 亚洲韩国一区二区三区| 一本久久a久久免费精品不卡| 中文字幕中文乱码欧美一区二区 | 91在线观看一区二区| 国产女人aaa级久久久级| 国产一区二区在线观看视频| 欧美精品乱人伦久久久久久| 亚洲第一精品在线| 欧美日韩视频在线观看一区二区三区 | 久久久午夜精品| 国产电影精品久久禁18| 久久久久久免费网| 国产中文字幕精品| 亚洲精品在线网站| 国产成人av网站| 中文字幕一区二区三区乱码在线| 波多野结衣中文字幕一区| 国产精品蜜臀在线观看| 91亚洲永久精品| 一区二区三区不卡视频在线观看| 91在线无精精品入口| 亚洲精品国久久99热| 欧美三电影在线| 免费黄网站欧美| 久久在线免费观看| 成人永久aaa| 亚洲精品高清视频在线观看| 欧美色视频一区| 久久精品国产精品亚洲红杏| 2023国产精品视频| 成人av片在线观看| 亚洲激情图片一区| 欧美亚洲国产bt| 亚洲老妇xxxxxx| 国产91精品一区二区麻豆亚洲| 国产精品卡一卡二| 成人av电影在线观看| 自拍偷在线精品自拍偷无码专区 | 99re这里只有精品视频首页| 国产精品国产三级国产有无不卡 | 日韩精品欧美精品| 久久蜜桃香蕉精品一区二区三区| 国产精品一区二区91| 1000精品久久久久久久久| 97国产精品videossex| 三级久久三级久久久| 精品福利在线导航| 春色校园综合激情亚洲| 亚洲柠檬福利资源导航| 欧美日韩中文国产| 韩国成人福利片在线播放| 国产欧美日韩另类一区| 99国产精品国产精品久久| 日产精品久久久久久久性色| 欧美成人精精品一区二区频| 国产精品综合av一区二区国产馆| 2020国产精品久久精品美国| 日韩美女视频在线| 成人午夜免费av| 亚洲国产美女搞黄色| 欧美成人乱码一区二区三区| 国产91精品一区二区麻豆网站 | 91精品国产综合久久婷婷香蕉| 麻豆成人av在线| 国产精品入口麻豆原神| 色欧美88888久久久久久影院| 蜜桃视频在线一区| 中文字幕不卡三区| 欧美高清视频不卡网| 成人网在线免费视频| 天天爽夜夜爽夜夜爽精品视频| 精品国产91亚洲一区二区三区婷婷| 91丨porny丨中文| 国产九色精品成人porny | 在线不卡a资源高清| 色综合亚洲欧洲|