给出plaintext 求 ciphertext
#include<stdio.h>
#include<string.h>
//这个程序,给出plaintext 求 ciphertext
int main()
{
int k,n,i,temp,c[75],p[75];
char ct[75],pt[75];
ct[0]='_',ct[27]='.';
for(i=1;i<=26;i++)
ct[i]='a'+i-1;
while(scanf("%d",&k)&&k)
{
scanf("%s",pt);
n=strlen(pt);
for(i=0;i<n;i++)
{
if(pt[i]=='_')
p[i]=0;
else if(pt[i]=='.')
p[i]=27;
else p[i]=pt[i]-'a'+1;
}
for(i=0;i<n;i++)
{
temp=(k*i)%n;
c[i]=(p[temp]-i)%28;
if(c[i]<0) c[i]+=28;
printf("%c",ct[c[i]]);
}
printf("\n");
}
return 0;
}
给出 ciphertext 求plaintext
#include<stdio.h>
#include<string.h>
//这个程序,给出 ciphertext 求plaintext
int main()
{
int k,n,i,temp,pos,c[75],p[75];
char ct[75],pt[75];
pt[0]='_',pt[27]='.';
for(i=1;i<=26;i++)
pt[i]='a'+i-1;
while(scanf("%d",&k)&&k)
{
scanf("%s",ct);
n=strlen(ct);
for(i=0;i<n;i++)
{
if(ct[i]=='_')
c[i]=0;
else if(ct[i]=='.')
c[i]=27;
else c[i]=ct[i]-'a'+1;
}
for(i=0;i<n;i++)
{
pos=k*i%n;
p[pos]=(c[i]+i)%28;
}
for(i=0;i<n;i++)
printf("%c",pt[p[i]]);
printf("\n");
}
return 0;
}