2.3.实现加解密程序
替代密码(C语言实现)
- 加密和解密算法
#include<stdio.h>
#define MAX 1024
void encrypt(char m[MAX],int k) //加密
{
int loc[MAX];
char c[MAX];
for(int i=0;m[i]!='\0';i++) {
if(m[i]>='a' && m[i]<='z') {
loc[i]=m[i]-'a'; //位置从0开始
c[i]=(loc[i]+k)%26+'a'; //密文
}
if(m[i]>='A' && m[i]<='Z') {
loc[i]=m[i]-'A'; //位置从0开始
c[i]=(loc[i]+k)%26+'A'; //密文
}
printf("%c",c[i]);
}
printf("\n");
}
void decode(char m[MAX],int k) //解密
{
int loc[MAX];
char c[MAX];
for(int i=0;m[i]!='\0';i++) {
if(m[i]>='a' && m[i]<='z') {
loc[i]=m[i]-'a'; //位置从0开始
c[i]=(loc[i]-k)%26+'a'; //明文
}
if(m[i]>='A' && m[i]<='Z') {
loc[i]=m[i]-'A'; //位置0个开始
c[i]=(loc[i]-k)%26+'A'; //明文
}
printf("%c",c[i]);
}
printf("\n");
}
int main()
{
char m[MAX];
int k;
printf("请选择:1.加密 2.解密\n");
int x;
scanf("%d",&x);
switch(x) {
case 1:
{
printf("请输入明文:\n");
scanf("%s",m);
printf("请输入加***:\n");
scanf("%d",&k);
printf("加密后的密文:\n");
encrypt(m,k);
}
break;
case 2:
{
printf("请输入密文:\n");
scanf("%s",m);
printf("请输入解***:\n");
scanf("%d",&k);
printf("解密后的明文:\n");
decode(m,k);
}
break;
default: break;
}
return 0;
}
运行结果:
加密
解密