单表置换密码的C++代码实现,供大家参考,具体内容如下

本程序使用方法:需要在本程序所在的文件夹创建一个"密码学.txt"文档。

该程序所需要的数据全部由该文档提供,然后运行即可得到结果,如需要修改数据,必须从文档中人工修改

文档格式的要求:文档总共包含两行。第一行由一个1或2的数字和一个字符串组成,数字1代表加密,2代表解密,字符串表示密钥

第二行仅包含一个字符串,这个字符串是需要加密或解密的内容。

该程序运行结果直接由控制台输出

运行结果:

代码:

#include

#include

#include

using namespace std;

ifstream in("密码学.txt");

void JiaMi(char ZhiHuan[]); //加密函数

void JieMi(char ZhiHuan[]); //解密函数

void setZhiHuan(char ZhiHuan[],char fanZhiHuanBiao[]); //设置置换表函数

int main()

{

int m; //确定是加密或解密?加密为1,解密为2

char ZhiHuanBiao['z'+1]; //正向置换表,加密时用

char fanZhiHuanBiao['Z'+1]; //反向置换表,解密时用

cout<

in>>m; //读入m

setZhiHuan(ZhiHuanBiao, fanZhiHuanBiao); //设置置换表

switch(m) //判断m值,执行相应的功能

{

case 1: JiaMi(ZhiHuanBiao);break;

case 2: JieMi(fanZhiHuanBiao);break;

default:break;

}

return 0;

}

void JiaMi(char ZhiHuan[]) //加密

{

string MingWen; //保存明文

cout<

getline(in,MingWen); //读入明文

cout<

cout<

for(int i=0; i

{

if(MingWen[i]>='a' && MingWen[i]<='z')

cout<

else cout<

}

cout<

}

void JieMi(char fanZhiHuan[])

{

string MiWen; //保存密文

cout<

getline(in,MiWen); //读入密文

cout<

cout<

for(int i=0; i

{

if(MiWen[i]>='A' && MiWen[i]<='Z')

cout<

else cout<

}

cout<

}

void setZhiHuan(char ZhiHuanBiao[],char fanZhiHuanBiao[])

{

int i; //i和j是循环变量,除此之外没有任何意义

char j;

string s; //密钥

cout<

getline(in,s); //读入密钥

cout<

cout<

string s1;

for(i = 0 ; i < s.length();i++) //对密钥进行处理(去掉空格和重复的字符)

{

bool sign =0; //标志变量

if(s[i] >= 'A' && s[i] <='Z')

{

for(int j = 0; j < s1.length();j++)

{

if(s[i] == s1[j])

{

sign = 1;

break;

}

}

if(sign == 0) s1 = s1 + s[i];

else sign = 0;

}

}

for( j ='a';j<='z';j++)cout<

char ch='A';

for( i = 'a' ;i <= 'z'; i++) //该循环利用密钥得到置换表

{

if(i < 'a' + s1.length()) //前面直接用s1代替

{

ZhiHuanBiao[i] = s1[i-'a'];

}

else //后面将剩下的"贴"上去

{

for(int j = 'a'; j < 'a' + s1.length(); j++)

{

if(ch == ZhiHuanBiao[j])

{

ch++;

j= 'a'; //每次都从头开始搜索

continue;

}

}

ZhiHuanBiao[i] = ch;

ch++;

}

cout<

}

cout<

for( i='a'; i<= 'z'; i++) //该循环利用置换表得到反置换表

{

fanZhiHuanBiao[ ZhiHuanBiao[i] ] = i;

}

for( i='A'; i<= 'Z'; i++) //输出反置换表

{

cout<< fanZhiHuanBiao[i] <

}

cout<

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

单表置换密码java代码实现_C++实现单置换密码相关推荐

  1. 单表置换密码java代码实现_单表替换密码

    要求: 实现单表替换密码,用键盘接收明文和密钥,屏幕答应替换表和密文,大小写敏感,输入健壮性. 实际问题: 密钥处理应该是这个程序的重点,加密和解密都没有什么要注意的地方.用key[]数组接收keyt ...

  2. 数据结构1:单链表反转java代码解释

    来源于尚硅谷的老师代码,只因其中有几行代码自己课上没听明白,课后自己整理了一下 首先完整代码如下: //将单链表反转 public static void reversetList(HeroNode ...

  3. mysql查询单表的销售额_MYSQL select语句的单表查询

    MYSQL select语句的单表查询 发布时间:2020-05-29 13:19:48 来源:亿速云 阅读:131 作者:Leah 这篇文章运用了实例代码展示select语句的单表查询的用法,代码非 ...

  4. mysql 单表查询 优化_SQL优化 MySQL版 - 单表优化及细节详讲

    单表优化及细节详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:本文章需要MySQL数据库优化基础或观看前几篇文章,传送门: B树索引详讲(初识SQL优化,认识索引):htt ...

  5. 2021-9-下旬 数据结构-线性表-队列-java代码实现(复习用)

    话说...每次都用现成的类实现,是不是有点偷懒 //队列的本质也是线性表,特性为只在线性表首位端进行操作,为先进先出,和生活中排队的队列是一样的 //队列涉及到的操作主要是入队(enQueue)和出队 ...

  6. java代码实现链表_java单链表代码实现

    用惯了C++,java写起来果然不太爽...不废话了,上代码... package javaInnerclassDemo; class Link{ class Node{ private String ...

  7. 2021-9-下旬 数据结构-线性表- 栈 -java代码实现(复习用)

    import java.util.ArrayList; import java.util.List; //栈的本质就是线性表,因为总在线性表的表尾端进行操作(出栈入栈),其重要特性为FILO先进后出 ...

  8. 2021-9-下旬 数据结构-线性表-双向链表-java代码实现(复习用)

    public class DoubleLinkedListZH<E> {//调用方法参数是index的记得检测是否在合法范围(0~size-1)内,可以写一个arrangeCheck函数, ...

  9. 2021-9-下旬 数据结构-线性表-链表-java代码实现(复习用)

    链表涉及到指针了,这里我还不了解java里对指针的隐藏,又由于以前学过C++里的指针,二者混淆,导致一开始非常蒙,出了很多问题,当然后来随着边写边查,基本都解决了. 顺便学习了一下java里的泛型 / ...

最新文章

  1. 正则表达式学习神器!
  2. day5 python学习
  3. Linux安装glibc(升级版本)
  4. 汉诺塔c语言源程序步骤,汉诺塔问题的算法分析及C语言演示程序的实现
  5. 使用boost模板函数实现读写锁
  6. Android系统开发智能机器人,Android智能机器人详解
  7. ChannelMergerNode
  8. bash配置文件的修改
  9. CAT - 监控平台之装配篇
  10. webpack官方文档分析(一):安装
  11. Yii 2.0 权威指南 (2) 使用forms
  12. XGBOOST模型简单调参(分类)
  13. ABAP 销售订单BAPI创建批导程序
  14. android网易云桌面歌词,网易云怎么设置桌面歌词?
  15. 案例| 公司信息化建设规划方案
  16. 闭环整流电路matlab仿真,分享:基于双闭环的单相整流器原理简介及仿真验证
  17. How to choose the number oftopics/partitions in a Kafka cluster?
  18. 02_性能_内存调整_个人学习小结
  19. 亲测有效win10系统QQ音乐无法安装
  20. PAT乙级做题部分总结

热门文章

  1. 一统江湖的大前端(1)——PPT制作库impress.js(含附件)
  2. Java List相关用法
  3. Beamer演示时不能正常显示底栏的问题及解决
  4. markdown、LaTeX输入自定义算符Res
  5. linux usr local权限,【linux】sudo chown -R $(whoami) /usr/local提示操作被拒绝
  6. 对于scanf,strcpy等函数报4996错误的粗暴而简单解决办法
  7. 实用的 BOM 属性对象方法
  8. CSS和HTML面试题
  9. day4 终止条件continue和break和return的区别
  10. 公众号点击图片变成另一张_公众号互动内容:小众潮流or下一个风口?| 新榜观察...