凯撒密码加密、解密、暴力破解(C语言实现)
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语言实现)相关推荐
- python 凯撒密码加密和暴力破解
def decrypt(message):#凯撒密码破解SYMBOLS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'#循环遍历所有可能的KEYfor key in range(len(SY ...
- 凯撒密码加密解密C语言详细代码
凯撒密码加密解密C语言详细代码 凯撒密码 又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod ...
- 凯撒密码加密解密——Java代码(密码学)
凯撒密码加密解密--Java代码(密码学) 凯撒密码: 恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文 ...
- C++凯撒密码加密解密算法
一.算法描述 凯撒密码的加密解密算法,逻辑很简单,就是两个公式: 比如说下面这个例子的加密解密公式,就是位移量为3时的结果 加密公式 f(a)=(a+3) mod 26 解密公式 f(a)=(a+23 ...
- 凯撒密码加解密及破解实现原理
概念及原理 根据百度百科上的解释,凯撒密码是一种古老的加密算法. 密码的使用最早可以追溯到古罗马时期,<高卢战记>有描述恺撒曾经使用密码来传递信息,即所谓的"恺撒密码" ...
- Python编程:实现凯撒密码加密解密
凯撒密码 原理: 通过把字母移动一定的位数来实现加解密 明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文. 例如: 当步长为3时,A被替换成D,B被替换成E,依此类推,X替 ...
- Matlab凯撒密码加密解密
Pratice problem: Bob wants to send the message "Start sending messages at 8:30" to Alice i ...
- 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) ...
- C++实现古典密码-凯撒密码加密解密算法
文章目录 第一部分 Caesar密码简介 1.1 基本思想 1.2 历史沿革 第二部分 Caesar密码的C++实现 第一部分 Caesar密码简介 1.1 基本思想 在密码学中,恺撒密码(英语:Ca ...
- Java版 凯撒密码 加密、解密、暴力破解
Java版 凯撒密码 加密.解密.暴力破解 用Java实现凯撒密码的 '加密' 和 '解密' 工作 代码实现如下: 代码片 package com.hellow.demo;import java.ut ...
最新文章
- linux c 获取绝对路径各种方法分析
- hdu1796容斥原理
- Python实训day08pm【面试和职场的经验分享】
- OpenGL® ES 3.0 Programming Guide - Book Website
- php文件防删改,PHP实现增删改查以及防SQL注入
- Visual Studio 2019 16.4 Preview 3 发布
- 将截断字符串或二进制数据。
- Little Kings - SGU 223(状态压缩)
- 【重点 递归版】剑指offer——面试题16:反转链表
- 建筑智能化综合监控系统数据点解剖
- 钢笔墨水能否代替打印机墨水_打印机墨水怎么分类?
- CDMA HERT平台分布式基站 DBS3900 CDMA
- 有关于TableGen的简单介绍
- android记账本折线图_小熊记账本
- linux修改休眠时间设置,centos设置不休眠的方法
- 申请专利时要不要向专利局出示实物?
- 一个http请求的详细过程
- 用友数据库表名参照表
- 设计模式之Reactor反应堆
- CSR 蓝牙芯片运行SPP服务是PS 设置