凯撒(caesar)密码加解密方法
凯撒加密(Caesarcipher)是一种简单的消息编码方式:它根据字母表将消息中的每个字母移动常量位k。
举个例子如果k等于3,则在编码后的消息中,每个字母都会向前移动3位:
a会被替换为d;b会被替换成e;依此类推。字母表末尾将回卷到字母表开头。
于是,w会被替换为z,x会被替换为a
如果是将移动的位数用随机数进行代替,并且记录下该随机数,则破解密码的难度将大大增加。
来自于维基百科上面的解释
来自于一个优秀博文的解释
caesar加密原理图 —-
一、加密解密的方法
二、C语言程序实现
#include <stdio.h>
#include <stdlib.h>
int main (){
char small_letter[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 big_letter[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 text[1000],result[1000];
int c,count=0,k,p;
char function;
printf("Insert Text:");
c=getchar();
while(1) //读取字符串{if(c == '\n') break;text[count]=c;printf("%c",text[count]);count++;c=getchar();}printf("\n");
printf("Encrypt or Decrypt? E or D :");
scanf("%c",&function);
if (function == 'E'){printf("Insert Key :" );scanf("%d",&k);for(int i=0;i<count;i++){if(text[i]>='A'&&text[i]<='Z'){result[i]=big_letter[((text[i]-'A')+k)%26];}//找出加密后字符在字符数组里的对应位置else if (text[i]>='a'&&text[i]<='z'){result[i]=small_letter[((text[i]-'a')+k)%26];}else result[i]=text[i];printf("%c",result[i]);}
}else {printf("Insert Key :" );scanf("%d",&k);for(int i=0;i<count;i++){if(text[i]>='A'&&text[i]<='Z'){p=((text[i]-'A')-k);while(p<0)p+=26;result[i]=big_letter[p];}//找出解密后字符在字符数组里的对应位置//这里要注意不要让它超出范围(下表位置为负数)else if (text[i]>='a'&&text[i]<='z'){p=((text[i]-'a')-k);while(p<0)p+=26;result[i]=small_letter[p];}else result[i]=text[i];printf("%c",result[i]);}printf("\n");
}
return 0;
}
三、程序结果
四、参考文献
【1】维基百科
【2】凯撒密码
【3】凯撒密码c语言实现
凯撒(caesar)密码加解密方法相关推荐
- 古典密码算法 凯撒(Caesar)密码,又叫循环移位密码
古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密.它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密.下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密 ...
- c语言caesar密码编程,C语言程序设计#凯撒Caesar密码
#include #include//颜色 using namespace std; int jiami(); int jiemi(); int main() { printf("***** ...
- python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...
#-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/k ...
- Druid之——连接池自定义数据库密码加解密的实现
转载请注明出处:https://blog.csdn.net/l1028386804/article/details/79920338 Druid是阿里巴巴开发的一款数据库连接池,它支持对数据库密码的加 ...
- yml配置文件的密码加解密
yml配置文件的密码加解密 1.低版本2.x 1)引入jar包 2)生成密码 3)测下解密 4)yml配置 2.高版本 3.x 1)引入jar包 2)生成密码 3)yml配置 1.低版本2.x 1)引 ...
- Druid连接池自定义数据库密码加解密的实现
Druid的功能 1.替换DBCP和C3P0.Druid提供了一个高效.功能强大.可扩展性好的数据库连接池. 2.可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能 ...
- 密码加解密java语言实现
目录 前言 1.密码加密的主要方式 2.代码的实现过程 3.整体代码 前言 随着技术的发展,密码加密技术已经越来越普遍越来越多样化,在我们生活中常见的加密算法包括了DES加密算法,AES加密算法,RS ...
- base64前端加解密方法
18.base64前端加解密方法 1.添加方法js方法 const Base64 = {//加密encode(str) {if (str===undefined || str === "&q ...
- 仿射密码python_仿射密码加解密 python
参数选取:模数n=26+10=36,k2为学号后2位:k1为与学号后2位最近的素数. 加解密:加密自己名字的全拼,再解密. 密钥 k = (k1 , k2) 仿射密码加解密算法是: m:是输入的 ...
最新文章
- python程序设计试卷_Python程序设计试题库
- 高性能Sqlite存储模型对象解密
- oracle伪客户端的安装(oracle不安装客户端)
- dnsmasq详解手册
- 程序员基本功04JAVA的内存回收
- WZ132源代码行侠仗义
- Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(11) - 数据可缓存性控制指令
- HTML5网站大观:10个精美的复古风格 HTML5 网站作品
- 对于未定义为 System.String 的列,唯一有效的值是(引发异常)。
- CleanMyMac X下载Mac系统清理优化工具
- CrystalDiskMark简介
- 超级右键-Mac右键扩展工具
- windows下远程连接Mysql
- js实现文本相似度对比
- 易语言调用大漠Ocr文字识别游戏角色坐标
- 2020美容师(初级)操作证考试及美容师(初级)作业模拟考试
- 腾讯高工保姆级“Java成长手册”,层层递进,全是精华 Github上都没有
- JD消费者行为分析——漏斗转化
- 【工具】sci-hub:一个神奇的免费下载文献的网站
- ST32/GD32嵌入式硬件开发总目录