Playfair算法.docx
- 文档编号:1209253
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:7
- 大小:14.80KB
Playfair算法.docx
《Playfair算法.docx》由会员分享,可在线阅读,更多相关《Playfair算法.docx(7页珍藏版)》请在冰点文库上搜索。
Playfair算法
Playfair加密算法(C语言)
#include
#include
#include
#defineNUM1000
intmain()
{
while(true)
{
inti,j,k=0,m,n,temp=0,length;
charkey[NUM],voa[26];
chartable[5][5];
charword[NUM];
//printf("%d",'z');
printf("密钥:
");
scanf("%s",key);
length=strlen(key);
for(i=0;i { if(key[i]=='j') key[i]='i'; } for(i=0;i { for(j=i+1;j if(key[i]==key[j]) { for(intt=j;t { key[t]=key[t+1]; } j--; length--; } if(j==1) { key[j]=0; break; } } //printf("%d\n",length); for(i=0;i<26;i++) { voa[i]=65+i; } for(i=0;i { key[i]=key[i]-32; } charp; intcount=0; for(i=0;i<26;i++) { p=voa[i]; for(j=0;j { if(p==key[j]) { key[i+length]=p; count+=1; break; } //printf("%d",count); } if(j==length) { key[i+length-count]=p; } } ////////////////////////////////////// intu=0; for(i=0;i<26;i++) { if(key[i]=='J') { for(u=i;u<26;u++) { key[u]=key[u+1]; } } if(key[i]=='I') key[i]='*'; //printf("%c",word[i]); } temp=0; for(i=0;i<5;i++) { for(j=0;j<5;j++) { table[i][j]=key[j+temp]; printf("%c",table[i][j]); if(j==4) { temp+=5; printf("\n"); } } } printf("明文: "); scanf("%s",word); length=strlen(word); //printf("%d\n",length); intcounter=0; for(i=0;i { if(word[i]==word[i+1]) { i+=1; counter+=1; } else i+=2; } //printf("1: %d\n",length+counter); for(i=0;i { if(word[i]==word[i+1]) { for(j=length+counter-1;j>i+1;j--) { word[j]=word[j-1]; } word[i+1]='x'; } } length=length+counter; if(length%2! =0) { word[length]='x'; length+=1; } for(k=0;k { word[k]=word[k]-32; } for(i=0;i { if(word[i]=='I'||word[i]=='J') { word[i]='*'; } } count=0,k=0; loop: for(i=0;i<5,k { //k=k-2; for(j=0;j<5;j++) { for(m=0;m<5;m++) { for(n=0;n<5;n++) { if((table[i][j]==word[k])&&(table[m][n]==word[k+1])&&(i==m)) { count=1; word[k]=table[i][j+1]; word[k+1]=table[m][n+1]; if(j==4) { word[k]=table[i][0]; //break; } if(n==4) { word[k+1]=table[m][0]; //break; } //printf("1: %c%c%d",word[0],word[1],k); //break; //Sleep(1000); k+=2; if(count==1) { gotoloop; } } elseif((table[i][j]==word[k])&&(table[m][n]==word[k+1])&&(j==n)) { count=1; word[k]=table[i+1][j]; word[k+1]=table[m+1][n]; if(i==4) { word[k]=table[0][j]; //break; } if(m==4) { word[k+1]=table[0][n]; //break; } //printf("2: %c%c",word[0],word[1]); k+=2; if(count==1) { gotoloop; } } elseif((table[i][j]==word[k])&&(table[m][n]==word[k+1])&&(i! =m)&&(j! =n)) { count=1; word[k]=table[i][n]; word[k+1]=table[m][j]; //printf("3: %c%c",word[0],word[1]); k+=2; if(count==1) { gotoloop; } } } } } } printf("密文: "); for(k=0;k { printf("%c",word[k]); } printf("\n\n"); system("pause"); } return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Playfair 算法