C语言实现凯撒密码加解密
凯撒密码
- 加密即把a-z或A-Z的字母向后移动n个字符实现加密,若n=3的话,a对应d,z对应c,如此循环;
- 解密刚好和加密相反,加密向后移动的话解密就向前移动。
加密的C代码如下:
#include <stdio.h>
void encode(char str[],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 i,k,m; for(i=0;str[i]!='\0';i++)//判空条件也可以使用strlen(str)来获取str长度实现 {if('a'<=str[i] && str[i]<='z'){k=str[i]-'a';//使用k来获得当前字符对于字符a的偏离程度。若当前字符为a,则k=0,刚好符合字符数组min的下标m=(26+k+n)%26;//使用m来保存移动后的字符,对26取余数保证m始终位于0至25之间。若n为复数的话k+n可能小于0,因此在前面加上26保证其为正数。str[i]=min[m];} else if('A'<=str[i] && str[i]<='Z'){k=str[i]-'A';m=(26+k+n)%26;str[i]=max[m];} }
}int main()
{char a[10],ch;int n;printf("输入n值:");scanf("%d",&n);ch=getchar();printf("\n输入原始字符串:");gets(a);encode(a,n);printf("\n转换后:");puts(a);return 0;
}
解密的C代码如下:
#include <stdio.h>
void decode(char str[],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 i,k,m; for(i=0;str[i]!='\0';i++)//判空条件也可以使用strlen(str)来获取str长度实现 {if('a'<=str[i] && str[i]<='z'){k=str[i]-'a';//使用k来获得当前字符对于字符a的偏离程度。若当前字符为a,则k=0,刚好符合字符数组min的下标m=(26+k-n)%26;//使用m来保存移动后的字符,由于k-n可能为负数因此在前面加上26保证其为正数。str[i]=min[m];} else if('A'<=str[i] && str[i]<='Z'){k=str[i]-'A';m=(26+k-n)%26;str[i]=max[m];} }
}
int main()
{char a[10],ch;int n;printf("输入n值:");scanf("%d",&n);ch=getchar();printf("\n输入原始字符串:");gets(a);decode(a,n);printf("\n转换后:");puts(a);return 0;
}
C语言实现凯撒密码加解密相关推荐
- python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...
#-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/k ...
- 凯撒密码加解密及破解实现原理
概念及原理 根据百度百科上的解释,凯撒密码是一种古老的加密算法. 密码的使用最早可以追溯到古罗马时期,<高卢战记>有描述恺撒曾经使用密码来传递信息,即所谓的"恺撒密码" ...
- 凯撒密码加密解密C语言详细代码
凯撒密码加密解密C语言详细代码 凯撒密码 又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod ...
- 凯撒密码c语言小写字母,凯撒密码c(c语言编程凯撒密码)
凯撒密码c(c语言编程凯撒密码) 2020-05-15 13:09:51 共10个回答 #include#includeintmain(){charsave[10][30];inta,b,i,j;sc ...
- 凯撒密码加密解密——Java代码(密码学)
凯撒密码加密解密--Java代码(密码学) 凯撒密码: 恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文 ...
- 凯撒密码c++语言程序,凯撒密码(加密与解密)
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. /******************************************** ...
- 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 ...
- C++凯撒密码加密解密算法
一.算法描述 凯撒密码的加密解密算法,逻辑很简单,就是两个公式: 比如说下面这个例子的加密解密公式,就是位移量为3时的结果 加密公式 f(a)=(a+3) mod 26 解密公式 f(a)=(a+23 ...
最新文章
- SQL与NoSQL区别-读写性能
- pythonvbb转换txt_Caltech行人数据集转化VOC数据集
- TComboBox下拉取值
- WebBrowser控件打开https站点
- linux笔记之 vi编辑器和用户的配置文件及提权
- hbase动态更改行键设计_Hadoop HBase概念学习系列之优秀行键设计(十六)
- 迎春舞会之数字舞蹈(洛谷-P1538)
- windows中运行qt5构建的程序提示 无法启动此程序,因为计算机中丢失qt5Cored.dll 解决方法
- MySQL两个字段都建立索引 使用情况
- php去掉 x5E,清除wordpress里PHP文件恶意代码
- 移动互联网“去哪儿”?
- python 散点图点击链接图片_Python数据可视化——散点图
- Qi v1.2.4协议 之 定频调压方案
- Centos系统修改远程端口
- python:实现newton_raphson牛顿拉夫森算法(附完整源码)
- java毕业设计招聘管理系统Mybatis+系统+数据库+调试部署
- qt5把qt_zh_CN.qm加载了,但QTextEdit的右键菜单仍然是英文,而QLineEdit的倒是中文。怎样设置使得QTextEdit的右键菜单是中文
- 我设计开发的第一个产品发布了,微信小程序“集美装修效果图“
- 昨天睡眠质量记录70分
- 这11家世界顶级AI初创公司,每个单拎出来都是行业第一