C语言设计,替换密码开发设计,2022年9月信息安全课程作业分享

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <ctype.h>#define N 1000void encrypt();void decrypt();void decryptAll();int key() {char k[N];printf("输入密钥(1~26):");gets(k);      while (1) {if (atoi(k) > 0 && atoi(k) <= 26)break;printf("格式错误,输入密钥(1~26):");gets(k);}return atoi(k);
}void change(char code[],char code2[] ,int n) {char min[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 max[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'};int k,m;for (int i = 0; i < strlen(code); i++) {if('a'<=code[i] && code[i]<='z'){k=code[i]-'a';m=(26+k-n)%26;code2[i]=min[m];}   else if('A'<=code[i] && code[i]<='Z'){k=code[i]-'A';m=(26+k-n)%26;code2[i]=max[m];}else{code2[i]=code[i];}       }
}void encrypt() {char min[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 max[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 code[N] = {};//接受字符串 int n,k,m;getchar();printf("请输入要加密的内容:");gets(code);n = key();//获得加密顺序的密钥 for (int i = 0; i < strlen(code); i++) {if('a'<=code[i] && code[i]<='z'){k=code[i]-'a';m=(26+k+n)%26;code[i]=min[m];}  else if('A'<=code[i] && code[i]<='Z'){k=code[i]-'A';m=(26+k+n)%26;code[i]=max[m];}else{code[i]=code[i];}   }printf("加密之后的内容为:");puts(code);
}void decrypt() {char code[N] = {}, code2[N] = {};int k;getchar();printf("输入密文:");gets(code);k = key();   change(code,code2, k);printf("解密的内容为:");puts(code2);
}void decryptAll() {char code[N] = {},code2[N]={};getchar();printf("输入密文:");gets (code);for (int k = 1; k <= 26; ++k) {   change(code,code2, k);   printf("当key = %d时,解密是:", k);puts(code2);}
}int main() {int x;while (1) { printf("\n\n\t================= 欢迎使用凯撒密码加密系统 =============\n\n");printf("\t=====================请选择服务=====================\n");printf("\t*                                                  *\n");printf("\t*    1  加密                   2   解密            *\n");printf("\t*                                                  *\n");printf("\t*    3  暴力解密               4   退出            *\n");printf("\t====================================================\n");printf("\t\t\t请作出选择(1-4):\n");   scanf("%d", &x);if (x == 1)encrypt();     else if (x == 2)decrypt();     else if (x == 3)decryptAll();     else  if(x==4){printf("已退出,谢谢使用\n");printf("欢迎您下次使用,凯撒密码加密系统时刻在。"); break;   }else{ printf("警告输入错误!!!\n");} }
}

凯撒密码加密、解密、暴力破解(C语言实现)相关推荐

  1. python 凯撒密码加密和暴力破解

    def decrypt(message):#凯撒密码破解SYMBOLS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'#循环遍历所有可能的KEYfor key in range(len(SY ...

  2. 凯撒密码加密解密C语言详细代码

    凯撒密码加密解密C语言详细代码 凯撒密码 又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod ...

  3. 凯撒密码加密解密——Java代码(密码学)

    凯撒密码加密解密--Java代码(密码学) 凯撒密码: 恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文 ...

  4. C++凯撒密码加密解密算法

    一.算法描述 凯撒密码的加密解密算法,逻辑很简单,就是两个公式: 比如说下面这个例子的加密解密公式,就是位移量为3时的结果 加密公式 f(a)=(a+3) mod 26 解密公式 f(a)=(a+23 ...

  5. 凯撒密码加解密及破解实现原理

    概念及原理 根据百度百科上的解释,凯撒密码是一种古老的加密算法. 密码的使用最早可以追溯到古罗马时期,<高卢战记>有描述恺撒曾经使用密码来传递信息,即所谓的"恺撒密码" ...

  6. Python编程:实现凯撒密码加密解密

    凯撒密码 原理: 通过把字母移动一定的位数来实现加解密 明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文. 例如: 当步长为3时,A被替换成D,B被替换成E,依此类推,X替 ...

  7. Matlab凯撒密码加密解密

    Pratice problem: Bob wants to send the message "Start sending messages at 8:30" to Alice i ...

  8. 2.凯撒密码加密解密(C)

    明文空间M.密文空间C都是和密钥空间K满足,M=C=K={0,1,2,-,25}=Z_26 ,即把26个英文字母与整数0,1,2,-,25一一对应. 加密变换,E={E:Z26→Z26, Ek (m) ...

  9. C++实现古典密码-凯撒密码加密解密算法

    文章目录 第一部分 Caesar密码简介 1.1 基本思想 1.2 历史沿革 第二部分 Caesar密码的C++实现 第一部分 Caesar密码简介 1.1 基本思想 在密码学中,恺撒密码(英语:Ca ...

  10. Java版 凯撒密码 加密、解密、暴力破解

    Java版 凯撒密码 加密.解密.暴力破解 用Java实现凯撒密码的 '加密' 和 '解密' 工作 代码实现如下: 代码片 package com.hellow.demo;import java.ut ...

最新文章

  1. linux c 获取绝对路径各种方法分析
  2. hdu1796容斥原理
  3. Python实训day08pm【面试和职场的经验分享】
  4. OpenGL® ES 3.0 Programming Guide - Book Website
  5. php文件防删改,PHP实现增删改查以及防SQL注入
  6. Visual Studio 2019 16.4 Preview 3 发布
  7. 将截断字符串或二进制数据。
  8. Little Kings - SGU 223(状态压缩)
  9. 【重点 递归版】剑指offer——面试题16:反转链表
  10. 建筑智能化综合监控系统数据点解剖
  11. 钢笔墨水能否代替打印机墨水_打印机墨水怎么分类?
  12. CDMA HERT平台分布式基站 DBS3900 CDMA
  13. 有关于TableGen的简单介绍
  14. android记账本折线图_小熊记账本
  15. linux修改休眠时间设置,centos设置不休眠的方法
  16. 申请专利时要不要向专利局出示实物?
  17. 一个http请求的详细过程
  18. 用友数据库表名参照表
  19. 设计模式之Reactor反应堆
  20. CSR 蓝牙芯片运行SPP服务是PS 设置

热门文章

  1. NET下基于OO4O,FME,ODP.NET的Oracle Spatial空间数据读取操作
  2. 记一次钓鱼网站的代码审计
  3. 知识图谱推理问题总结
  4. It's about trust
  5. X-Lite和eyeBeam常见故障以及解决方法
  6. 18. 皮格马利翁效应
  7. Linux 操作系统课程练习题(五)综合练习
  8. 【HMS Core】统一扫码服务中的RemoteView如何修改视图比例?
  9. Extreme Table简介及使用
  10. win10能登微信 打不开网页