凯撒加密(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)密码加解密方法相关推荐

  1. 古典密码算法 凯撒(Caesar)密码,又叫循环移位密码

    古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密.它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密.下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密 ...

  2. c语言caesar密码编程,C语言程序设计#凯撒Caesar密码

    #include #include//颜色 using namespace std; int jiami(); int jiemi(); int main() { printf("***** ...

  3. python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...

    #-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/k ...

  4. Druid之——连接池自定义数据库密码加解密的实现

    转载请注明出处:https://blog.csdn.net/l1028386804/article/details/79920338 Druid是阿里巴巴开发的一款数据库连接池,它支持对数据库密码的加 ...

  5. yml配置文件的密码加解密

    yml配置文件的密码加解密 1.低版本2.x 1)引入jar包 2)生成密码 3)测下解密 4)yml配置 2.高版本 3.x 1)引入jar包 2)生成密码 3)yml配置 1.低版本2.x 1)引 ...

  6. Druid连接池自定义数据库密码加解密的实现

    Druid的功能 1.替换DBCP和C3P0.Druid提供了一个高效.功能强大.可扩展性好的数据库连接池. 2.可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能 ...

  7. 密码加解密java语言实现

    目录 前言 1.密码加密的主要方式 2.代码的实现过程 3.整体代码 前言 随着技术的发展,密码加密技术已经越来越普遍越来越多样化,在我们生活中常见的加密算法包括了DES加密算法,AES加密算法,RS ...

  8. base64前端加解密方法

    18.base64前端加解密方法 1.添加方法js方法 const Base64 = {//加密encode(str) {if (str===undefined || str === "&q ...

  9. 仿射密码python_仿射密码加解密 python

    参数选取:模数n=26+10=36,k2为学号后2位:k1为与学号后2位最近的素数. 加解密:加密自己名字的全拼,再解密. 密钥 k = (k1 , k2) 仿射密码加解密算法是:    m:是输入的 ...

最新文章

  1. python程序设计试卷_Python程序设计试题库
  2. 高性能Sqlite存储模型对象解密
  3. oracle伪客户端的安装(oracle不安装客户端)
  4. dnsmasq详解手册
  5. 程序员基本功04JAVA的内存回收
  6. WZ132源代码行侠仗义
  7. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(11) - 数据可缓存性控制指令
  8. HTML5网站大观:10个精美的复古风格 HTML5 网站作品
  9. 对于未定义为 System.String 的列,唯一有效的值是(引发异常)。
  10. CleanMyMac X下载Mac系统清理优化工具
  11. CrystalDiskMark简介
  12. 超级右键-Mac右键扩展工具
  13. windows下远程连接Mysql
  14. js实现文本相似度对比
  15. 易语言调用大漠Ocr文字识别游戏角色坐标
  16. 2020美容师(初级)操作证考试及美容师(初级)作业模拟考试
  17. 腾讯高工保姆级“Java成长手册”,层层递进,全是精华 Github上都没有
  18. JD消费者行为分析——漏斗转化
  19. 【工具】sci-hub:一个神奇的免费下载文献的网站
  20. ST32/GD32嵌入式硬件开发总目录

热门文章

  1. python编写coc部落冲突游戏辅助(1)
  2. asp.net Listbox控件用法
  3. 计算机excel按F4是那个公式,Excel中F4有哪些功能 Excel如何巧妙使用F4
  4. 基于人脸识别的“带口罩”系统-python完整实现
  5. 如何看懂k线图:K线详细分析图解
  6. echarts设置label添加下划线
  7. 多模态特征表示和融合
  8. 2018版本webstorm的安装与汉化!【最新,超全,超详细!】
  9. 如何利用福禄克FLUKE 718 校准压力开关
  10. JAVA父类引用指向子类的对象是什么意思?有什么作用?