求简单的解密啊!小弟是初学者,求帮助
evdzcvi这几个字母是用以下方法加密码所得到的:英文字母从A—Z分别对应0—25,先将明文转化为对应的数字,
C(密文)=k*对应的数字(mod26)
再将C转化成对应的字母就得到evdzcvi!
现在要解出明文与密钥K!
希望高手们帮帮小弟!教一下我解密的方法与程序,程序最好有解释!!谢谢!
#include<stdio.h> void decrypt(char m[],char c[],int k,int length) { int i,mm,nn; for(i=0;i<length;i++) { /* 第一步:将字母转换为Z26中的元素 */ if((c[i]>='A')&&(c[i]<='Z')) { mm=c[i]-'A'; /* 第二步:加密 */ nn = (mm/k)%26; /* 第三步:将密文转换为字母 */ m[i] = 'a'+nn; } else if((c[i]>='a')&&(c[i]<='z')) { mm=c[i]-'a'; /* 第二步:加密 */ nn = (mm/k)%26; /* 第三步:将密文转换为字母 */ m[i] = 'a'+nn; } else m[i]=c[i]; } return; } void main() { char m[100]; char c[100]="evdzcvi"; int k,j,i,length; length=7; for(j=0;j<26;j++) { decrypt(m,c,j,length); printf("密钥为%d:明文为:",j); for(i=0;i<length;i++) printf("%c",m[i]); printf("\n"); } return; }