c语言编写,欢迎扔板砖
//移位算法
#include
#include
#define SIZE 50
int main()
{
//i 用于计数输入个数,j 为临时变量, plain 存放明文, cipher 存放密文,decryption存放解密后文本,fpp 为明文文件指针,fpc 为密文文件指针
int i,j;
char plain[SIZE],cipher[SIZE],decryption[SIZE],ciphertext[SIZE];
FILE * fpp,* fpc,* fpd;
//加密
//建立新的明文TXT文件
printf("Caesar algorithm\n");
if((fpp=fopen("plain.txt","w+"))==NULL)
{
printf("creat new plain file error!\n");
exit(0);
}
//输入明文
printf("input plain alphabet:\n");
i=0;
scanf("%c",&plain[i]);
while(plain[i]!='\n'&&i<SIZE)
{
i++;
scanf("%c",&plain[i]);
}
printf("success input %d characters\n",i);
//将明文转存到文件中
for(j=0;j<i;j++)
{
if(fwrite(&plain[j],sizeof(char),1,fpp)!=1)
{
printf("saving plain file error!\n");
exit(0);
}
}
printf("success saving plain text!\n");
//加密
for(j=0;j<i;j++)
{
cipher[j]=plain[j]+3;
if(cipher[j]99)
{
printf("cipher %d = %c\n",j,cipher[j]);
}
else if(cipher[j]>122)
{
cipher[j]=cipher[j]%122+96;
printf("cipher %d = %c\n",j,cipher[j]);
}
else if(cipher[j]>90)
{
cipher[j]=cipher[j]%90+64;
printf("cipher %d = %c\n",j,cipher[j]);
}
else
{
printf("cipher %d = %c\n",j,cipher[j]);
}
}
//建立密文文件
if((fpc=fopen("cipher.txt","w+"))==NULL)
{
printf("create new cipher file error!");
exit(0);
}
for(j=0;j<i;j++)
{
if(fwrite(&cipher[j],sizeof(char),1,fpc)!=1)
{
printf("saving cipher file error!");
exit(0);
}
}
printf("success saving cipher file!");
printf("\n");
//解密
printf("input ciphertext alphabet:\n");
i=0;
scanf("%c",&ciphertext[i]);
while(ciphertext[i]!='\n'&&i<SIZE)
{
i++;
scanf("%c",&ciphertext[i]);
}
for(j=0;j<i;j++)
{
decryption[j]=ciphertext[j]-3;
if(decryption[j]90&&decryption[j]<97)
{
decryption[j]=123-(97-decryption[j]);
printf("character %d = %c\n",j,decryption[j]);
}
else
{