展会信息港展会大全

维吉利亚加密算法 求C或C++源代码 !!急
来源:互联网   发布日期:2011-10-01 19:59:55   浏览:7287次  

导读: 参考答案:#include stdio.h#include iostream#include stringusing namespace std;void encrypt(char *m, char *k, char *c) //加密算法{ int i = 0,j=0; while(m[i] != '') { if(m[i] = 'a' m[i] = 'z') { c[i] = (m[i] - 'a' + k[i%4] - 'a') % 26 + 'a';...

参考答案: #include <stdio.h> #include <iostream> #include <string> using namespace std; void encrypt(char *m, char *k, char *c) //加密算法 { int i = 0,j=0; while(m[i] != '') { if(m[i] >= 'a' && m[i] <= 'z') { c[i] = (m[i] - 'a' + k[i%4] - 'a') % 26 + 'a'; i++; } else { c[i] = (m[i] - 'A' + k[i%4] - 'A') % 26 + 'A'; i++; } } c[i] = ''; } void decrypt(char *m, char *k, char *c) //解密算法 { int i = 0,j=0; while(c[i] != '') { if(c[i] >= 'a' && c[i] <= 'z') { m[i] = (c[i] - k[i%4] + 26) % 26 + 'a'; //注意此处 i++; } } m[i] = ''; } void main() { int ii = 1, jj,j; char mm[100]; char kk[100]; printf("enter the k's contest:"); for(j=0;kk[j-1]!='#';j++) { kk[j]=getchar(); } char cc[100]; while(ii) { printf("0:Exit 1 : Encrypt 2 : Decryptn"); printf("input the number:n"); scanf("%d",&jj); switch (jj) { case 0: break; case 1 : printf("input the original text:n"); scanf("%s", mm); encrypt(mm, kk, cc); printf("%sn", cc); break; case 2 : printf("input the cryptograph:n"); scanf("%s", cc); decrypt(mm, kk, cc); printf("%sn", mm); break; default : break; } } } 你再调试下,有点小错
其它答案: 维吉利亚加密算法 急...谢谢 题目描述:试用维吉利亚密码的方法,以ART(不区分大小写)为密钥对任意给定的字母进行加密。 原理解析:加密方法:将字母a,b,c…z 对应数字0,1,2……25。明文字母mj,密文cj,密钥ki,cj=mj+ki mod 26 (i=1,2,3)。例如:m="datasecurity"对应数字"3,0,19,0,18,......,19,24";k="best" 对应数字为"1,4,18,19"密钥长度为4;c="eeltt ……r")其中c1=m1 + k1 mod 26 = 4 (e),c5=m5+k1 mod 26=19(t),c12=m12 +k4 mod 26 = 17 (r)。 基本要

赞助本站

相关内容
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港