仿射加密-C语言

1、[仿射加密概念](https://baike.baidu.com/item/%E4%BB%BF%E5%B0%84%E5%AF%86%E7%A0%81/2250198?fr=aladdin)

2、代码:
 

#include<stdio.h>
#include<string.h>

void pritext(char text[128]);
void cryp(char cryp[],char text1[],int a,int b);
void jm(char c[128],char m[128],int a,int b);
main()
{
	int re=1;
	int i;
	int count=0;
	char text[128];
    char cryp2[128];
	printf("input text:");
    gets(text);
	cryp(&cryp2,text,5,8);
	jm(cryp2,text,5,8);

}
void pritext(char text[128]){
	int count=strlen(text);
	int i=0;
	for(i=0;i<count;i++){
		printf("%c",text[i]);
	}
	 printf("\n");
}
void cryp(char c[128],char m[128],int a,int b){
	int mlen=strlen(m);
	int i=0;
	printf("加密前:%s",m);
	for(i=0;i<mlen;i++){
		//cryp[i]=my[(int)(text1[i]+k)%26];
		if (m[i]==' '){
			c[i]=m[i];}
		else if(m[i]>64&&m[i]<91)  {          //区分明文的大小写         
			c[i]=(a*(m[i]-65)+b)%26 +65;}      //对大写字母进行加密
		else  {
			c[i]=(a*(m[i]-97)+b)%26 +97;}       //对小写字母进行加密   
		printf("\n%c加密中:%c",m[i],c[i]);
	}
	printf("\n加密后:");
	for(i=0;i<mlen;i++){
		printf("%c",c[i]);
	}
	printf("\n");
}

int NI(int a) /*求a相对于b的逆元*/
{
	int b = 26;
    int i = 0;
    while(a*(++i)%b!=1);  //a*i=1 mod b
    return i;
}

void jm(char c[128],char m[128],int a,int b){
	int length;
	int j=0,i=0;
    length = strlen(m);
	printf("\n开始解密:");



    for(j=0;j<length-1;j++){
		if (c[j]==' '){
			 m[j]=c[j];}
    	else if(c[j]>64&&c[j]<91) {               //对大写密文进行解密 
    	    m[j]=(NI(a)*((c[j]-65)-b))%26+65;   //解密算法 m[i]=a逆*(c[i]-b)mod 26
     	    if(NI(a)*((c[j]-65)-b)<0){      //修正 NI(a)*((c[j]-65)-b)结果为负数的情况 
		      m[j]=m[j]+26;       
		    } 
	    }
	    else{                     //对小写密文进行解密 
	    	m[j]=(NI(a)*((c[j]-97)-b))%26+97;   //解密算法 m[i]=a逆*(c[i]-b)mod 26
     	    if(NI(a)*((c[j]-97)-b)<0){      //修正 NI(a)*((c[j]-97)-b)结果为负数的情况 
		      m[j]=m[j]+26;       
		    } 
		}
		printf("\n%c解密中:%c",c[j],m[j]);//输出解密后的明文 
	}
	printf("\n");
	printf("\n解密后:");
	for(i=0;i<length;i++){
		printf("%c",m[i]);
	}
	printf("\n");

}

3、结果图:

参考文章:https://blog.csdn.net/xiaoyun_ny/article/details/41216369

猜你喜欢

转载自blog.csdn.net/tzyyy1/article/details/88823182
今日推荐