在密码学中,恺撒密码(或称恺撒加密、恺撒变换、变换加密)是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

例如,当偏移量是 +3 的时候,所有的字母 A 将被替换成 D,B 变成 E,以此类推。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

程序要求:用户输入一行明文(字符串),针对字母进行加密(偏移量设置为 3),非字母部分保留原型。

输入:

Today, we make history!

输出:

Wrgdb, zh pdnh klvwrub!

难点:

后边几个字母加上偏移后需要变成前边的字母,比如 x -> a,y -> b,z -> c。 如果像前面23个字母那样直接向后偏移三位后,得到的将不是英文字母,而是ASCII表中对应的符号{, |, }。

解决方法:

我们在使用凯撒密码将字母char向后移动x位的时候,会很自然地将后面的字母移动a位,从而使char对应到字母z,然后再将char移动x - a位,来完成这一次密码转换。

我们需要让计算机也能够自动地完成这一命令,同时不破坏替换靠前的字母的输出结果。

使用余数来实现这一目标。

putchar('a' + (ch - 'a' + 3) % 26);

代码解析:

0.当输入'b' + 3 < 26 时,(ch - 'a' + 3) % 26 = 0 余 4,所以输出为'a' + 4 = 'e'。

1.当输入'y' + 3 > 26 时,(ch - 'a' + 3) % 26 = 1 余 1,所以输出为'a' + 1 = 'b'。

源代码:

#include <stdio.h>int main()
{int ch;printf("请输入明文:");while ((ch = getchar()) != '\n'){if (ch >= 'a' && ch <= 'z'){putchar('a' + (ch - 'a' + 3) % 26);continue;}if (ch >= 'A' && ch <= 'Z'){putchar('A' + (ch - 'A' + 3) % 26);continue;}putchar(ch);}putchar('\n');return 0;
}

凯撒密码中的字符转换相关推荐

  1. python之凯撒密码及大小写字符翻转

    编写程序,凯撒密码及大小写字符翻转 1.ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串 ...

  2. Python 零基础入门到实战(一)笔记:内置对象、浅拷贝、深拷贝、计算圆面积、凯撒密码、英文大小写转换、输入国家打印出国家名和首都、输入数字英文输出、统计句子中的字母数量、猜随机数

    Python入门到实战(一) 为什么写这篇文章 Part 1 入门部分 什么是编程语言? Python的优势 目前应用 特点 Part 2 6种内置对象 1 整数.浮点数 2 字符串 3 列表 4 元 ...

  3. Python----凯撒密码、将字符转换成ASCLL函数、将ASCLL码转换成字符函数

     ord(查询的字符):         查询字符的ASCLL码 chr(需要转换的ascll码):         将ASCLL相应数值的数转换成字符 xxyw=input() xxmw='' fo ...

  4. 凯撒密码的自动化破解方法(适用于英文文本)

    凯撒密码的自动化破解方法(适用于英文文本) 凯撒密码 凯撒加密是有记载的最古老的加密方法.原始的凯撒密码没有密钥,加密方式很原始,就是通过将字母表循环右移三位进行加密:a被D替代,b被E替代,-,x被 ...

  5. 密码学入门1——凯撒密码和三重DES加解密

    实验目的 1.完成第一个入门加解密--凯撒密码 2.完成当下较为流行的三重DES加解密技术 3.熟悉所学的实际运用方向 实验准备 硬件:计算机或笔记本电脑 操作系统:Mac操作系统 IDE环境:Ecl ...

  6. Python凯撒密码解密

    Python 凯撒密码解密 简介 加密 解密 python程序. 其他参考文章 简介 在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人 ...

  7. 【Matlab学习】凯撒密码Caesar‘s cypher

    简介 凯撒密码是历史上已知最早的密码之一.凯撒密码中的每个字母在字母表中"移动"了一定的位置.例如,如果密码为1,则A将替换为B,B将替换为C,依此类推.相传最早是凯撒大帝用来和将 ...

  8. 密码学学习笔记(一)——凯撒密码及简单替换密码

    文章目录 1. 凯撒密码 1.1 加解密方式 1.1.1 加密 1.1.2 解密 1.2 暴力破解 2. 简单替换密码 2.1 加解密方式 2.1.1 加密 2.1.2 解密 2.2 频率分析法破解 ...

  9. java密码框转字符串_实现汉字的凯撒密码(内容包括:去掉字符串中的转义字符、汉字的unicode转换)...

    实验内容: 选择合适的秘钥,利用上述三个算法:熟悉恺撒密码.双重置换密码.一次一密密码算法.加密如下明文: 大风起兮云飞扬, 威加海内兮归故乡, 安得猛士兮守四方. <大风歌>--刘邦 3 ...

  10. 凯撒密码C语言去掉空格字符,凯撒密码C语言实现

    <凯撒密码C语言实现>由会员分享,可在线阅读,更多相关<凯撒密码C语言实现(8页珍藏版)>请在人人文库网上搜索. 1.凯撒密码是一种非常古老的加密方法, 相传当年凯撒大地行军打 ...

最新文章

  1. html5调用系统声音1s响一次_HTML5声音录制/播放功能的实现代码
  2. java与与短路与_Java中短路运算符与逻辑运算符示例详解
  3. JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
  4. centos 安装指定版本gc_番外篇 (1) Docker 安装
  5. 微软Entity Framework安装和初步研究
  6. php文件目录操作相关
  7. Android 使用mqtt实例,包括接收服务器推送以及上传数据到服务器
  8. 2018ACM-ICPC国际大学生程序设计竞赛亚洲区域赛(青岛站)赛后总结
  9. 数据库连接字符串 mysql_数据库连接字符串(MySQL,SQL Server,Oracle)
  10. vs debug 调试 快捷键
  11. C++ Gui Qt4 书籍代码在VS2008上正确编译使用
  12. Vue只是JavaScript其中的一个框架
  13. import 导入模块学习
  14. Windows 上的高效启动器—— Listary
  15. html中表格的合并
  16. 井字游戏HTML,HTML5井字棋游戏
  17. Python中的协议有什么作用?
  18. Fuzzy set基本介绍(1)
  19. 【转】BCWS、BCWP、ACWP的理解
  20. REDSHIFT学习笔记-渲染设置2_AOVOpt

热门文章

  1. STM32 f103 实现命令终端
  2. 虚函数、C++类、结构体、父类与子类的继承性
  3. 基于matlab的不规则面积图像测量,基于matlab的不规则面积图像测量.doc
  4. 学籍专业填计算机还是理工,学生程序论文,关于高职非计算机专业理工类《C语言程序设计》课程的教学相关参考文献资料-免费论文范文...
  5. java学生信息管理系统源码(java学生管理系统 )
  6. 七雄争霸mysql修改_七雄争霸单机版游戏
  7. gameloft java 游戏_每一款JAVA游戏都是经典,但只有四款游戏,是90%玩家从小玩到大...
  8. mysql数据库容灾方案_本地IDC机房数据库容灾解决方案
  9. Windows 新建文本文档快捷键设置
  10. Wet Shark and Flowers(思维)