字符串的加密与解密

来源:百度知道 编辑:UC知道 时间:2024/05/21 01:56:31
字符串“How are you”的加密与解密
试利用传统加密与解密技术:
(1)替换密码,例如:每一个字符的ASC码值加4。
(2)换位密码,例如:从左到右编序号,然后把奇数位上的字符与偶数位上的字符进行交换。
对字符串“How are you”进行加密。
要求编写C/C++程序实现上述功能。

//替换密码,源代码

#include <iostream.h>

void main()

{char s1[12]="How are you";

int i;

cout<<s1<<endl;//输出原文

for(i=0;i<12;i++)

s1[i]+=4;

cout<<s1<<endl;//输出“替换密码”

}

// 换位密码,源代码

#include <iostream.h>

void main()

{

char sl[12]="How are you";

int i,m;

cout<<sl<<endl;

for (i=0;i<12;i++)

if(i%2==0)

{m=sl[i];

sl[i]=sl[i+1];

sl[i+1]=m;

}

cout<<sl<<endl;

}

列换位密码
#include <iostream.h>
#include <string.h>
#define N 4
void main()
{ int m,i,j;
char p1[80],p2[20][N],p3[N][20];
char pstr[]="guangzhouisabeautifulcity";

//用符号#填充明文
m=(strlen(pstr)/N+1)*N;
for(i=0;i<strlen(pstr);i++)
p1[i]=pstr[i];
for(i=strlen(pstr);i<m;i++)
p1[i]='#';

//打断
m=m/N;
for(i=0;i<m;i++)
for(j=0;j<N;j++)
p2[i][j]=p1[i*N+j);

//列换位,产生密文
for(i=0;i<N;i++)
for(j=0;j<m;j++)
p3[i][j]=p2[j][i];

//输出
cout<<"\n明文:";
for(i=0;i<m*N;i++)
cout<<p1[i];
cout<<"\n密文:";
for(i=0;i<N;i++)
for(j=0;j<m;j++)
cout<<p3[i][j];
cout<<endl;
}