C基础/PlayFair加密
来源:互联网 发布:wine怎么卸载软件 编辑:程序博客网 时间:2024/06/15 04:40
http://wenku.baidu.com/view/9a28a8070740be1e650e9a2a.html 第12题
//playfair 加密#include"stdio.h"#include"string.h"#include"stdlib.h"#define x 50char MiYao[x],PassWord[x],AddPass[x],Table[5][5],Map[25]; bool Visit[27]={false};char English[27]="abcdefghijklmnopqrstuvwxyz";void Input(){printf("请输入密钥:\t");scanf("%s",MiYao);printf("请输入待加密密码:\t");scanf("%s",PassWord);}void Fun_5x5(){int count = 0,V =0;/*标记密钥内字符为: true*/for(int i=0;MiYao[i]!='\0';i++)if(strchr(English,MiYao[i])!=NULL)Visit[strchr(English,MiYao[i])-English] = true;/*执行密钥矩阵操作 并标记已使用字符:true*/for(int i=0;i<5;i++)for(int j=0;j<5;j++){if(count<strlen(MiYao))Table[i][j] = MiYao[count++];else{while(Visit[V] != false)V++;Table[i][j] = English[V];Visit[V++] = true;}}puts("∞∞∞密钥矩阵为∞∞∞");for(int i=0;i<5;i++){for(int j=0;j<5;j++)printf("%3c",Table[i][j]);puts("");}puts("∞∞∞∞∞∞∞∞∞∞∞"); }int IsVisited(char ch){return Visit[strchr(English,ch)-English];//false 未出现过 }void TabletoMap(){int count=0;for(int i=0;i<5;i++)for(int j=0;j<5;j++)Map[count++]=Table[i][j];Map[count]='\0';}void Judge(){int len = strlen(PassWord),i,j,k;memset(AddPass,0,sizeof(char)); /*一对对去字母,剩下单个字母,则不变化,直接放入加密串中.*/if(len%2){AddPass[len-1] = PassWord[len-1];len -=1;}/*一对中 密钥矩阵中 存在矩阵 eg.ab 先输出a同行顶点在输出b同行顶点*/int row1,low1,row2,low2,a1,a2;for(i=0;i<len;i+=2){char c1,c2;c1 = PassWord[i];c2 = PassWord[i+1];/*一对中 两字母相同 无变化*//*一对中 有字母不在密钥矩阵中 无变化*/if(c1 == c2 || ( !IsVisited(c1)||!IsVisited(c2))){AddPass[i] = c1;AddPass[i+1]=c2;}else{a1 = strchr(Map,c1)-Map;row1 = a1/5;low1 = a1%5;a2 = strchr(Map,c2)-Map;row2 = a2/5;low2 = a2%5;/*一对中 字符出现在同行或同列 简单swap字符*/if(row1 == row2 || low1 == low2){AddPass[i] = c2;AddPass[i+1] = c1;}else{AddPass[i] = Table[row1][low2];AddPass[i+1] = Table[row2][low1];}}}AddPass[len+1]='\0';puts("加密后字符串:"); puts(AddPass);puts("原串是:");puts(PassWord); } int main(){Input();Fun_5x5();TabletoMap();Judge();return 0;}
- C基础/PlayFair加密
- playfair 加密
- playfair加密
- Playfair密码变种加密
- Playfair密码变种加密
- Playfair密码 变种加密字符串
- playfair加密的简单实现
- 第二届蓝桥杯C/C++组第十题 Playfair密码变种加密
- Vernam加密法 Playfair密码加密
- playfair密码 C语言实现
- 使用Playfair密码变种加密字符串
- 利用playfair置换实现密钥加密
- 蓝桥杯之Playfair密码变种加密
- Playfair密码(波雷费密码)的C语言实现
- 用c++写的PlayFair密码的加密与解密算法
- 实现playfair(多字母替代密码)加密与解密程序
- 在Android平台上的playfair以及hill加密解密的小实验项目
- Playfair Cipher
- C#中跳转页面有那几种方法,简述其区别
- 基于live555中的liveMedia库的client开发流程
- 禁带宽度的概念
- Strcat /Strcpy /Strcmp / Strncmp/ Strlen 函数原型
- 局域网中工作组和域的主要差别!
- C基础/PlayFair加密
- QStyle类参考
- Got error 157 'Connection to NDB failed' from NDBINFO
- PHP session回收机制
- omap3530 dvsdk 相关网站
- C语言中volatile关键字的作用
- 电视才是移动音乐应用Shazam的未来
- Schema中elementFormDefault="qualified"所起的作用
- asp.net 长表单填写水平滚动条滑动效果