失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 凯撒加密 已知偏移量和未知偏移量解密

凯撒加密 已知偏移量和未知偏移量解密

时间:2020-11-02 11:04:01

相关推荐

凯撒加密 已知偏移量和未知偏移量解密

1、解密iodj$vkhuCh

2、暴力解密39.4H/?BA2,0.2@.?J

#include <iostream>#include <cstdio>#include <string>using namespace std;string s,m;void shuchu(int l){for(int i=0;i<l;i++){printf("%c",m[i]);}printf("\n");}void kaisa_jiami(int k){int l=s.length();for(int i=0;i<l;i++){m[i]=(s[i]+k)%128;}printf("加密结果:");shuchu(l);}void kaisa_jiemi(){int l=s.length();int k=s[0]-'f';//因为已经知道了解密的第一个字母是f,所以我只要先算出s[0]到f的偏移量for(int i=0;i<l;i++){m[i]=(s[i]+128-k)%128;//凯撒密码是只要26个字母,而选128个全assci码表是大范围。}printf("解密结果:");shuchu(l);}void kaisa_jiemi(int k){int l=s.length();for(int i=0;i<l;i++){m[i]=(s[i]+128-k)%128;}printf("解密结果:");shuchu(l);}int main(){int n,x,k,flag1=1,flag2,flag3;while(flag1==1){printf("请输入操作方式:1、加密 2、解密 3、退出:\n");scanf("%d",&n);getchar();if(n==1){printf("请输入所要加密的字符串:");getline(cin,s);flag2=1;while(flag2==1){printf("请输入加密时的偏移量:");scanf("%d",&k);if(k>=1&&k<=127){kaisa_jiami(k);flag2=0;}elseprintf("输入错误,偏移量应在1~127之间!请重新输入!\n#############################################################\n");}}else if(n==2){printf("请输入所要解密的字符串:");getline(cin,s);flag2=1;while(flag2==1){printf("是否已知偏移量?0、未知 1、已知:");scanf("%d",&x);if(x==0){kaisa_jiemi();flag2=0;}else if(x==1){flag3=1;while(flag3==1){printf("请输入解密时的偏移量:");scanf("%d",&k);if(k>=1&&k<=127){kaisa_jiemi(k);flag3=0;}elseprintf("输入错误,偏移量应在1~127之间!请重新输入!\n#############################################################\n");}flag2=0;}elseprintf("输入错误!请重新输入!\n#############################################################\n");}}else if(n==3)flag1=0;elseprintf("输入错误!请重新输入!\n#############################################################\n");}return 0;}

如果觉得《凯撒加密 已知偏移量和未知偏移量解密》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。