单表代换加密程序
来源:互联网 发布:美篇官方软件下载 编辑:程序博客网 时间:2024/06/05 09:54
<span style="font-size:18px;"></span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">看完密码学教程第一二三章完成了这个简单的单表代换加密程序设计。</span>
#include <stdio.h>#include <string.h>#define num 27int i,j,q,p,keynum,m=0;void table(char a[],char b[]);void encrypt(char c[],char d[2][100]); char plaintextA[100],plaintextB[100],plaintextC[100];char keyA[num],keyB[num],keyC[num];char key[num],exchangetable[2][100],ciphertext[100]; char alphabet[]="abcdefghijklmnopqrstuvwxyz";void main(){printf("insert the plaintext:\n");gets(plaintextA);printf("insert the key:\n");gets(keyA);for (i=0;keyA[i]!='\0';i++){if (keyA[i]>'A'&&keyA[i]<'Z')keyA[i]=keyA[i]+32;}for (j=0;keyA[j]!='\0';j++){keyB[j]=keyA[j]; keyC[j]=keyB[j];}for (i=0;keyB[i]!='\0';i++){for (p=i;p>=0;p--)if (keyB[p-1]==keyC[i])keyC[i]=' '; }for (i=0,q=0;keyC[i]!='\0';q++){if (keyC[q]!=' '){key[i]=keyC[q];keynum=i+1;i++;}}table(plaintextA,key);}void table(char plaintextA[],char key[]){p=0;for (i=0;i<27;i++){exchangetable[0][i]=alphabet[i];exchangetable[1][i]=key[i];}for (i=0;i<27;i++){for (j=0;j<keynum;j++){if (alphabet[i]==key[j]){j=keynum;m=1;}else m=0;}if (m==0){exchangetable[1][keynum+p]=alphabet[i];p++;}}for(i=0;i<2;i++) {for(j=0;j<27;j++) printf("%c ",exchangetable[i][j]);printf("\n");}encrypt(plaintextA,exchangetable);}void encrypt(char plaintextA[],char exchangetable[2][100]){for (i=0;i<100;i++){if (plaintextA[i]>='A'&&plaintextA[i]<='Z')plaintextB[i]=plaintextA[i]+32;else plaintextB[i]=plaintextA[i];}for (i=0;i<100;i++){if (plaintextB[i]>='a'&& plaintextB[i]<='z') {for (j=0;j<27;j++){if (plaintextB[i]==exchangetable[0][j])ciphertext[i]=exchangetable[1][j];}}else ciphertext[i]=plaintextB[i];}printf(" ciphertext is :\n");for (i=0;ciphertext[i]!='\0';i++){if (ciphertext[i]>='a'&&ciphertext[i]<='z')printf("%c",ciphertext[i]-32);else printf("%c",ciphertext[i]);}printf("\n");}
0 0
- 单表代换加密程序
- 古典密码加密解密之多表代换
- 多表代换加密(verginia 密码)破解
- 关于单表代换密码分析程序设计{C++}
- 基于置换和代换方法的灰度图像的加密
- 单表置换加密与凯撒码加密
- 加密程序
- 加密的病历单
- 加密的病历单
- 古典密码——vigenre多表代换密码
- 里氏代换
- 变量代换
- 变量代换
- 变量代换
- 命令代换
- 命令代换
- 命令代换
- vc6.0调试程序常用快捷键和MFC中做宏代换的技巧
- 零碎问题收集(自己收集的问题,解决方法有自己的、也有转自网络)
- mybatis插入数据时处理为null的属性
- C#中的Contains与IndexOf的区别
- 【java】继承
- cocos2dx 2.x系列存在的CFNetwork不支持64位问题
- 单表代换加密程序
- 欢迎使用CSDN-markdown编辑器
- 时间转换
- cocoapods
- 管道命令
- html中路径问题
- test
- 备忘——数组的应用
- Android源码分析之Builder模式