文章目录

  • 一、简介
  • 二、原理
  • 三、例题
  • 四、代码

一、简介

在密码学中,恺撒密码(英语:Caesar cipher),或称 恺撒加密、恺撒变换、变换加密 ,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是 333 的时候,所有的字母 AAA 将被替换成 DDD ,BBB 变成 EEE ,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码还在现代的 ROT13 系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。

二、原理

凯撒密码加密的时候会将 明文 中的每个字母在字母表中往后移动 一定的长度 ,如果往后移动的长度超过了字母表的长度,那么就用当前字母的位置数加上偏移的数量 对字母表的长度取余 这个余数就是该字母加密后在字母表中的位置

(下标从 000 开始计算)例如我们的明文字母在字母表中的下标是 444,凯撒加密需要移动 303030 位,而总字母表的长度是 262626 ,那么加密后的字母位置就是 (4+30)(4+30) % 26 = 8(4+30) ,其实就是一个循环的效果

具体的例子,如果我们的偏移量是 333 :

明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

由于加密的时候是往右偏移的,那么解密只需要同理往左偏移即可

根据偏移量的不同,凯撒的名称也不同,常见的有:

  • 偏移量为 10:Avocat
  • 偏移量为 13:ROT13
  • 偏移量为 -5:Cassis
  • 偏移量为 -6:Cassette

三、例题

题目链接: http://acm.mangata.ltd/p/S1

四、代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3fbool check(char c){if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')return true;return false;
}void Caesar(){string S;int p;getline(cin,S);cin>>p;int n = S.size();for(int i = 0;i < n; ++i){if(check(S[i]))S[i] = ((toupper(S[i]) - 'A' + p) % 26) + 'A';}cout<<S<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);slove();return 0;
}

浅析加密算法一【凯撒密码】相关推荐

  1. 凯撒密码加密算法 (8 分)

    凯撒密码加密算法 (8 分) 编写一个凯撒密码加密程序,接收用户输入的文本和密钥k,对明文中的字母a-z和字母A-Z替换为其后第k个字母. 输入格式: 接收两行输入,第一行为待加密的明文,第二行为密钥 ...

  2. playfair密码和凯撒密码加密算法的Java实现

    文章目录 一.实现广义的凯撒密码加密算法 二.实现广义的playfair密码的加密算法 总结 加密原理: 一.实现广义的凯撒密码加密算法 //实现广义的凯撒密码//凯撒密码的加密String plai ...

  3. 凯撒密码加密算法python_CTF中会用到的密码学基础(节选)

    Hello,大家好,好耐冇见,我系初音 今天我们来学习一下关于CTF中会用到的部分密码学基础(很简单的那部分) 01第一节.凯撒密码 在密码学中,凯撒密码(Caesar cipher),或称凯撒加密. ...

  4. 凯撒密码加密算法python_Python密码学入门:凯撒密码

    1 什么是密码学 自古以来,间谍.士兵.黑客.海盗.商人等人,大多依靠密码学来确保他们的秘密不会人尽皆知.密码学是一门使用秘密编码的学科.想要明白密码长什么样,看一看下面两段文本. nyr N.vNw ...

  5. php实现凯撒密码加密算法,Python实现的凯撒密码算法示例

    本文实例讲述了Python实现的凯撒密码算法.分享给大家供大家参考,具体如下: 一 介绍 凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方 ...

  6. php实现凯撒密码加密算法,Golang 实现凯撒密码

    一.凯撒密码加密代码思路 基本思路: 设置明文 和 位移步长(秘钥) 将明文转成小写,准备 明文字节切片 与 密文切片 循环将每个明文字符 按照 位移步长 做位移,存入密文切片 返回密文 导入包 im ...

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

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

  8. 凯撒密码和栅栏密码 - 密码学01

    凯撒密码和栅栏密码 让编程改变世界 Change the world by program 我们将会学到什么?! 这相信是大家广泛关注的话题,因为如果一开始给大家一个强大而震撼的目录,然后就是一屁股的 ...

  9. python中凯撒密码_python实现凯撒密码、凯撒加解密算法

    凯撒密码的原理:计算并输出偏移量为3的凯撒密码的结果 注意:密文是大写字母,在变换加密之前把明文字母都替换为大写字母 def casar(message): # *************begin* ...

最新文章

  1. (转)搜索Maven仓库 获取 groupid artifactId
  2. 静态方法和实例化方法的区别 -转载
  3. 【中级软考】什么是二维数组元素的偏移量?(就是把数组ravel[拉平]后存到内存中的元素位置)
  4. Codeforces 798D Mike and distribution (构造)
  5. [react] 在React中组件和元素有什么区别?
  6. openvswitch patch port使用方法
  7. delphi 获取数组长度_shell 普通数组
  8. picpick尺子像素大小精度不够准确_袖珍大小MFJ-223 1-60MHz彩色图形VNA矢量网络分析仪...
  9. Python项目导出依赖包requirements.txt
  10. 鬼谷八荒steam修改器|鬼谷八荒多功能修改器
  11. 抑郁症可以学计算机吗,AI能从人的话语中察觉到抑郁症吗?目前还为时过早
  12. 【卡特兰数】【高精】WZK打雪仗(war)
  13. 内网建站 NAT穿透 局域网穿透
  14. 支付宝小程序物联网开发
  15. 中国人寿保险单管理系统市场趋势报告、技术动态创新及市场预测
  16. XV6 RISCV源码阅读报告之 锁
  17. 【雕爷学编程】Arduino动手做(61)---电压检测传感器
  18. LATEX编辑高数基础公式
  19. 【线性规划LP建模实例——化学工厂肥料】
  20. docker容器打包成镜像并上传至dockerhub

热门文章

  1. 计算机毕业设计Node.js+Express校内视频资料管理系统(源码+程序+lw+远程调试)
  2. JDK原生的动态代理和CGLIB动态代理的实现
  3. Delphi中如何控制打印方向,纸张大小等
  4. 作业Homework
  5. Unity3D学习笔记——组件之Effects(效果/特效)——Particle System(粒子系统)
  6. Linux的快捷键和主要命令(转)
  7. 一键重装win7系统详细教程
  8. Mac OS SafariBookmarksSyncAgent意外退出解决方法
  9. Android 根据屏幕大小设置字体
  10. python银行系统