单表代换密码(凯撒密码)

news/2024/11/6 17:19:29/

  • 单表代换密码概述
    • 对所有的明文字母都用一个固定的代换进行加密 ,因而称为
    • 单表代换密码。加密过程中是从明文字母表到密文字母表的一一映射。例:
    • 恺撒(Caesar)密码。
    • 缺点:不能抗击字母频度分析,容易被破译
    • 单表密码的弱点:明文和密文字母之间的一一代替关系。这使得明文中的一些固有特性和规律(比如语言的各种统计特性)必然反映到密文中去。
  • 凯撒密码加解密过程(C实现)

    • #include <iostream>
      #include "string.h"
      using namespace std;char* CaesarEncrypt(char* plaintext);
      char* CaesarDecrypt(char* ciphertext);
      char a[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
      char b[26]={'X','N','Y','A','H','P','O','G','Z','Q','W','B','T','S','F','L','R','C','V','M','U','E','K','J','D','I'};int main()
      {char plaintext[105];printf("please input a string:\n");gets(plaintext);char *ciphertext1=CaesarEncrypt(plaintext);CaesarDecrypt(ciphertext1);getchar();getchar();return 0;
      }char* CaesarEncrypt(char plaintext[]){char ciphertext[105];int i=0;int sizeofplaintext=strlen(plaintext);for(i=0;i<sizeofplaintext;i++){int flag=0;for(int j=0;j<26;j++){if(plaintext[i]==a[j]){ciphertext[i]=b[j];flag=1;}}if(flag!=1){ciphertext[i]=' ';}}ciphertext[i]='\0';printf("the ciphertext is:" );printf("%s",ciphertext);char *str = new char[strlen(ciphertext) + 1];		 //分配存储空间  strcpy_s(str, strlen(ciphertext) + 1,ciphertext);	 //将s中字符串复制到str,最后一个空间为'\0'结束符  return str;
      }char* CaesarDecrypt(char* ciphertext){int sizeofciphertext=strlen(ciphertext);int i;char plaintext[105];for(i=0;i<sizeofciphertext;i++){int flag=0;for(int j=0;j<26;j++){if(ciphertext[i]==b[j]){plaintext[i]=a[j];flag=1;}}if(flag!=1){plaintext[i]=' ';}}plaintext[i]='\0';cout<<"\nthe plaintext is:"<<plaintext<<endl;return plaintext;
      }
  • 结果演示
    • 结果演示

  • 凯撒密码密码表
    • 单表置换表




http://www.ppmy.cn/news/665923.html

相关文章

了解世界杯赔率,让您运气更‘好‘(个人分享)

足球世界杯买球赢面计算 前言理论基础实际计算用例&#xff1a;代码实现真实数据 前言 此文是个人关于世界杯的一些浅显的看法&#xff0c;实际统计结果和计算方法有出入&#xff0c;可能原因&#xff1a;1&#xff09;数据量不够。2&#xff09;比赛双方差距够大导致的。但在…

海外观看2022卡塔尔世界杯中文直播攻略大全

足坛最顶级赛事非四年一届的世界杯莫属&#xff0c;强者之间的较量是球迷们喜闻乐见的&#xff0c;梅西、C罗、本泽马、姆巴佩等球星的表现更令人期待&#xff0c;每届世界杯总会给球迷带来一场久违的狂欢和视觉盛宴&#xff0c;2022卡塔尔世界杯又会给球迷们带来哪些惊喜&…

idea连接MYSQL报错汇总

idea连接MYSQL报错汇总 【The last packet sent successfully to the server was 0 milliseconds ago.The driver has not received any packets from the server.】 原因&#xff1a;mysql57 运行在非默认端口号 解决&#xff1a; 1.测试本地连接mysqsl57 打开C:\ProgramDa…

爱普生打印机清零软件

已下是支持的型号 http://链接&#xff1a;https://pan.baidu.com/s/1xoQi1QxwNNcgCYo-6OrhIw 提取码&#xff1a;Y009 --来自百度网盘超级会员V2的分享

Java常用数据库列表

1、MySQL MySQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由瑞典MySQL AB公司开发&#xff0c;现在由Oracle公司负责维护和支持。MySQL是最流行的数据库之一&#xff0c;被广泛用于各种应用程序和网站开发。 MySQL具有以下特点&#xff1a; …

【MySQL】利用SQL短路,解决无数据表连接问题

系列文章 MySQL安装教程&#xff08;详细&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/126037520 MySQL卸载教程&#xff08;详细&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129279265 …

PyCharm 新项目关联到码云(Gitee)源代码管理

1. 在 PyCharm 中创建新项目 打开 PyCharm&#xff0c;点击 “Create New Project” 或 “File” > “New Project”&#xff0c;然后按照提示完成新项目的创建。 2. 在码云上创建新仓库 登录到你的码云账户&#xff0c;点击 “新建仓库”&#xff0c;输入仓库名称、描述…

ARM第三、四章平时作业

第 3 章 ARM 指令集&#xff08; 共 50 分 &#xff09; 一、 ARM 指令分为几类&#xff1f;分别是什么&#xff1f; &#xff08; 6 分&#xff09; ARM 指令有五类 &#xff08;1 分&#xff09; &#xff1a;分支指令、数据处理指令、存储访问指令、协处理器指令和…