c语言明文翻译为密文(c语言明文翻译为密文怎么写)

2023-02-03 19:36:05 密语知识 思思

C语言简单密码破解(密文转明文)

调了半天,楼主真是太粗心了!middle1[]应该这样声明:

char middle1[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

最后输出start的时候要注意控制长度,改个for循环就好了!

#includestdio.h

#includestring.h

int main(void)

{

int i,j,length,n;

char temp;

char middle2[27];

char start[201],finish[201];

char middle1[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

gets(middle2);

gets(finish);

scanf("%d",n);

length=strlen(finish);

for(i=0;i25;i++)

{

for(j=i+1;j26;j++)

{

if(middle2[i]middle2[j])

{

temp=middle2[i];

middle2[i]=middle2[j];

middle2[j]=temp;

temp=middle1[i];

middle1[i]=middle1[j];

middle1[j]=temp;

}

}

}

for(i=1;i=n;i++)

{

for(j=0;jlength;j++)

{

if(finish[j]==' ')

{

start[j]=' ';

}

else

{

start[j]=middle1[finish[j]-'A'];

}

}

}

for( i = 0;i length;++i)

printf("%c",start[i]);

printf("\n");

return 0;

}

/*

ABCDEFGHIJKLMNOPQRSTUVWXYZ

*/

c语言:译密码

#includestdio.h

main()

{

char s[30];

int i=0;

gets(s);

while(s[i]!='\0')

{

if(s[i]='a's[i]='v'||s[i]='A's[i]='V')

s[i]+=4;

else if(s[i]='w's[i]='z')

s[i]=('a'-1)+4-('z'-s[i]);

else

{

if(s[i]='W's[i]='Z')

s[i]=('A'-1)+4-('Z'-s[i]);

}

i++;

}

puts(s);

//system("pause");

return 0;

}

c语言明文翻译为密文(c语言明文翻译为密文怎么写) 第1张

明文和密文转换

include iostream;

using namespace std;

#define N 6 //定义N的大小

#define M 5 //定义M的大小,N=M

void main()

{

char P[N]={0};

char K[M]={0};

char C[M]={0};//因为要用Ki加密,所以C[]只能有M个大

int i,j;//定义循环变量

cout "请输入明文数组,你可以输入"N"个字符长度"endl;

for (i=0;iN;i++)//为P[N]赋值

{

cout " P"i"=";

cin P[i];

}

cout "请输入密钥数组,你可以输入"M"个字符长度"endl;

for (j=0;jM;j++)//为K[M]赋值

{

cout "K"j"=";

cin K[j];

}

for (i=0;iM;i++)//加密!因为K[j]个数有限,只能用M做为循环次数

{

j=i%(M+1);

C[i]=P[i]+K[j];

cout P[i]endl;

cout K[j]endl;

cout C[i]endl;

if (0C[i])//7F=127

{

//C[cnt]=P[cnt]+K[i%(j+1)];//Ci=Pi+Kj(j=i mod(m+1)) (当Ci=7FH)

C[i]=C[i]+128;

cout C[i]endl;

}

else

{

//C[cnt]=P[cnt]+K[i%(j+1)]-128;//Ci=Pi+Kj-80H(j=i mod(m+1)) (当Ci7FH)

C[i]=C[i];

cout C[i]endl;

}

}

coutendlendl"输出加密后的密文C[i]如下:"endl;

for (i=0;i=40;i++)

cout "#";

cout endl;

for (i=0;iM;i++)//输出加密后的C[i]

{

cout C[i]endl;

}

for (i=0;i=40;i++)

cout "#";

cout endl;

for (i=0;iM;i++)//解密!因为K[j]个数有限,只能用M做为循环次数

{

j=i%(M+1);

if (C[i]=K[j])

{

P[i]=C[i]-K[j]+128;//Pi=Ci-Kj (j=i mod(m+1)) (当Ci=Kj)

}

else

{

P[i]=C[i]-K[j];//80H=128,Pi=Ci-Kj+80H(j=i mod(m+1))(当CiKj)

}

}

coutendlendl"输出解密后的明文P[i]如下:"endl;

for (i=0;i=36;i++)

cout "#";

cout endl;

for (i=0;iN;i++)//输出解密后的P[i]

{

cout P[i]endl;

}

for (i=0;i=36;i++)

cout "#";

cout endlendl;

明文密文问题(C语言编程)

#includestdio.h

#includestdlib.h

void jam();//声明加密函数

void jem();//声明解密函数

char mw[80],yw[80];//存放原文或密文的数组

void main()

{ char F;

do{

system("CLS");

printf("   请选择:\n");

printf("1、加密\n");

printf("2、解密\n");

printf("0、退出\n");

scanf("%c",F);

getchar();

switch(F)

{ case '1':

jam();

case '2':

jem(); }

} while(F!='0');

}

void jem()//解密函数

{ int j,n;

printf("请输入密文:\n");

gets(mw);

printf("密文是%s\n",mw);

j=0;

do//每循环处理一个字符

{

if (mw[j]='A'  mw[j]='Z')

{ n = mw[j]- 64 -13;//原文大写字符在字母表中位置

yw[j]= n = 0?'Z'+ n:n%26 + 64;}//原文大写字符

else if (mw[j]='a'  mw[j]='z')

{ n = mw[j]- 96 -13;//原文小写字符在字母表中位置

yw[j]= n = 0?'z'+ n:n%26 + 96;}//原文小写字符

else

yw[j]=mw[j];//忽略非字母

j++;

}while(mw[j]!='\0');

yw[j]=mw[j];

printf("原文是%s\n",yw);

getchar();}

void jam()//加密函数

{ int j,n;

printf("请输入原文:\n");

gets(mw);

printf("原文是%s\n",mw);

j=0;

do//每循环处理一个字符

{

if (mw[j]='A'  mw[j]='Z')

{n=(mw[j]-64+13)%26;//密文大写字符在字母表中位置

yw[j]=(n==0?'Z':(n+64));}//密文大写字符

else if (mw[j]='a'  mw[j]='z')

{n=(mw[j]-96+13)%26;//密文小写字符在字母表中位置

yw[j]=(n==0?'z':(n+96));}//密文小写字符

else

yw[j]=mw[j];//忽略非字母

j++;

}while(mw[j]!='\0');

yw[j]=mw[j];

printf("密文是%s\n",yw);

getchar();}

/*说明:

1、菜单调用加密或解密函数

2、加密时,逐个加密mw数组中字母,忽略非字母

3、解密时,逐个解密数组mw中字母,忽略非字母

4、加密算法是把原字符ascii码+13,解密算法是把密字符ascii码-13,但必须考虑模

运行效果如下图*/

用C或是C++实现明文到密文的转换

给,已经在VC上编译运行确认了:

#includeconio.h

#includestdio.h

#define N 20 //暂定密钥词最长为20个字符

#define M 100 //暂定输入明文最长为100个字符

void main()

{

int key[N]={NULL},keylength=0;

int beforeStr[M]={NULL},strlength=0;

int afterStr[M]={NULL};

int i,j;

char ch;

printf("请输入密钥单词: ");

while((ch=getchar())!='\n') key[keylength++]=ch-'a';

printf("请输入明文: ");

while((ch=getchar())!='\n')

{

if(ch='a'ch='z')

beforeStr[strlength++]=ch-'a';

else beforeStr[strlength++]=ch-'\0';

}

for(i=0,j=0;istrlength;i++)

{

if(beforeStr[i]=0beforeStr[i]=25)

{

afterStr[i]=(beforeStr[i]+key[j%keylength])%26;

j++;

}

else afterStr[i]=beforeStr[i];

}

printf("加密后为: ");

for(i=0;istrlength;i++)

{

if(afterStr[i]=0afterStr[i]=25) printf("%c",afterStr[i]+'a');

else printf("%c",afterStr[i]+'\0');

}

getch();

}