⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 playfair.cpp

📁 一些密码的程序
💻 CPP
字号:
#include<stdio.h>
#include<string.h>
int i,j,len,play[25];
char c,d,nams[20],namd[20],key[10],lab[128],flag[128],s[1024];
FILE *fds,*fdd;
main()
{ printf("\nkey?\n");
  scanf("%s",&key);
  printf("\nsrc?\n");
  scanf("%s",nams);
  printf("\ndst?\n");
  scanf("%s",namd);
  fds=fopen(nams,"r");
  fdd=fopen(namd,"w");
  for(i=0;i<128;i++) lab[i]=i;
  len=strlen(key);
  for(c=0,i=0;c<len;c++,i++)
    if(key[c]!='j')
      { lab[key[c]]=i;
	lab[key[c]-32]=i;
	flag[key[c]]=1;
	play[i]=key[c];
      }
    else {len--,i--;}
  for(c='a',i=len;c<='z';c++)
    if((!flag[c])&&(c!='j')&&(c!='J'))
    { lab[c]=i;
      lab[c-32]=i;
      play[i]=c;
      i++;
    }
  lab['j']=lab['i'];
  lab['J']=lab['i'];
  for(i=0;i<=24;i++)
    printf(" %c",play[i]);
  for(c=fgetc(fds);c!=EOF;fputc(c,fdd),c=fgetc(fds))
  { if((c>='a')&&(c<='z')||(c>='A')&&(c<='Z'))
      for(d=fgetc(fds),i=0;d!=EOF; d=fgetc(fds))
	if((d>='a')&&(d<='z')||(d>='A')&&(d<='Z'))
	{ if(lab[d]==lab[c])
	  { if(lab['x']<lab[c])
	    { d=play[lab['x']-lab['x']%5+lab[c]%5];
	      c=play[lab[c]-lab[c]%5+lab['x']%5];
	    }
	    else
	    { c=play[lab[d]-lab[d]%5+lab[c]%5];
	      d=play[lab[c]-lab[c]%5+lab[d]%5];
	    }
	    fputc(d,fdd);
	    fputc(c,fdd);
	  }
	  else
	  { if(lab[d]/5==lab[c]/5)
	    { c=play[lab[d]-lab[d]%5+(1+lab[d])%5];
	      d=play[lab[c]-lab[c]%5+(1+lab[c])%5];
	    }
	    if(lab[d]%5==lab[c]%5)
	    { c=play[(lab[d]+5)%25];
	      d=play[(lab[c]+5)%25];
	    }
	    else if(lab[d]<lab[c])
		   { d=play[lab[d]-lab[d]%5+lab[c]%5];
		     c=play[lab[c]-lab[c]%5+lab[d]%5];
		   }
		 else
		   { c=play[lab[d]-lab[d]%5+lab[c]%5];
		     d=play[lab[c]-lab[c]%5+lab[d]%5];
		   }
	  }
	  fputc(d,fdd);
	  fwrite(s,1,i,fdd);
	  break;
	}
	else { s[i]=d; i++;}
    if(d==EOF) break;
  }
  fclose(fds);
  fclose(fdd);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -