📄 111.txt
字号:
#include<stdio.h>
#include<ctype.h>
#include<string.h>
static char table[26][26];
void cryption(char *,char *,char (*table)[26],int,int);
void decryption(char *,char *,char (*table)[26],int,int);
void main()
{
char cho,choo;
int rot;
char key[256],plaintext[256];
int i,j,k_len,p_len;
//table[0][0]='A';
for(i=0;i<26;i++)
{
table[i][0]=i+65;
}
for(i=0;i<26;i++)
{
for(j=1;j<26;j++)
{
table[i][j]=(i+j)%26+65;
}
}
for(i=0;i<26;i++)
{
for(j=0;j<26;j++)
{
printf("%c,",table[i][j]);
}
printf("\n");
}
//if((fp=fopen(filename,"r+"))==NULL)
//{
// printf("\nCan not open file!\n");
//}
rot=1;
while(rot)
{
printf("Encryption or Decryption?(E/D):");
cho=getchar();
getchar();
printf("\nInput key:");
gets(key);
puts(key);
printf("\nInput plaintext:");
gets(plaintext);
puts(plaintext);
k_len=strlen(key);
p_len=strlen(plaintext);
//plaintext=(char *)malloc(sizeof(char)*k_len);
//fgets(plaintext,k_len+1,fp);
if(cho=='e')
{
cryption(plaintext,key,table,p_len,k_len);
}
if(cho=='d')
{
decryption(plaintext,key,table,p_len,k_len);
}
printf("\n");
for(i=0;i<p_len;i++)
{
printf("%c",plaintext[i]);
}
printf("\nQuit or Continue?(Q/C):");
scanf("%c",&choo);
getchar();
if(choo=='Q')
rot=0;
}
}
void cryption(char * plaintext,char * key,char table[][26],int p_len,int k_len)
{
int i,j,row,col;
j=0;
while(j<p_len)
{
for(i=0;i<k_len;i++)
{
if(!isspace(plaintext[j]))
{
col=tolower(plaintext[j])-97;
row=tolower(key[i])-97;
//printf("%d,%d ",row,col);
plaintext[j]=table[row][col];
}
else
{
i--;
}
j++;
}
}
//fputs(plaintext,fp);
}
void decryption(char * ciphertext,char * key,char table[26][26],int c_len,int k_len)
{
int i,j,row,k;
char col_ch;
j=0;
while(j<c_len)
{
for(i=0;i<k_len;i++)
{
if(((int)ciphertext[j])!=32)
{
col_ch=toupper(ciphertext[j]);
row=tolower(key[i])-97;
//k=col_ch-row;
k=0;
while(table[row][k]!=col_ch)
{
k++;
}
//printf("%d,%d ",row,k);
ciphertext[j]=k+97;
}
else
{
i--;
}
j++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -