凯撒密码(Caesar cipher) 详解
------------恢复内容开始------------
最近训练CTF的时候,发现密码学这块的知识不太系统,所以自己接下来会陆陆续续整理出来
就先从古典密码中的凯撒密码说起吧
凯撒密码内容比较简单,所以也注定了本文比较水
起源
所谓凯撒,便是你们所熟悉的那位征战千里的老战棍(不是《龙族》里的凯撒┗|`O′|┛ 嗷~~)
作为一名杰出的军事领袖,凯撒深知指挥官对前方将领的命令对于一场战争的重要性,这些信息绝对不能让敌方知道,于是他设计了一种对重要的军事信息进行加密的方法,即使这些信息被截获,敌方也不一定能看懂——这就是著名的凯撒密码,也算是最早的密码实例。
加密方式
只要将各个字母向后移动三位就好啦!注意:按字母表循环来看 比如:Z后一位是A
这样明文就变成密文了!!
你们猜loryhbrx解密之后是什么?
知道的小伙伴可以留言鸭!!
变式衍生
凯撒密码的移动位数可以自由定义,可以为正,也可以为负
当移动位数为13时就称作ROT13(ROT13又可以衍生出其他的加密算法,以后会介绍到的)
以下是相关偏移量的称呼:
偏移量为10:Avocat(A→K)
偏移量为-5:Cassis (K 6)
偏移量为-6:Cassette (K 7)
安全问题
通常我们得到凯撒密码的时候是无法得知位移量的,因此可以采取穷举算法
只要列举25次便可以从中发现玄机
但更多时候加密方式不会是简单的位移,可能与其他加密方式组合,这样破解难度将加大
最后贴张列举的图以便大家理解
凯撒密码(Caesar cipher) 详解的更多相关文章
- 凯撒密码Caesar
//@132屋里上课群 #include<stdio.h>#include<stdlib.h>//颜色using namespace std;int jiami();int j ...
- FCC JS基础算法题(13):Caesars Cipher(凯撒密码)
题目描述: 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码.移位密码也就是密码中的字母会按照指定的数量来做移位.一个常见的案例就是ROT13密码,字母会移位13个位置.由'A ...
- Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作
# -*- coding: gb2312 -*- #用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作 #作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.co ...
- C语言:凯撒密码的实现
凯撒密码的实现(10分)题目内容: 凯撒密码(caeser)是罗马扩张时期朱利斯?凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令.它将字母表中的字母移动一定位置而实现加密. ...
- 凯撒密码 CH Round #57 - Story of the OI Class
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2357%20-%20Story%20of%20the%20OI%20Class/凯撒密码 题解:刚开始想map, ...
- MySQL的用户密码过期功能详解
MySQL的用户密码过期功能详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 先说明两个术语. Payment Ca ...
- java:凯撒密码及String的应用
一,凯撒密码 古罗马皇帝凯撒在打仗时曾使用过以下方法加密军事情报 现在用java实现 程序设计思想: 1,字符串首先要转化为字符数组,才能依次加密 2,当原来的字符为X,Y,Z时,加密后要转化为A,B ...
- 凯撒密码加密解密--JAVA实现(基础)
凯撒密码一种代换密码,据说凯撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码.凯撒密码的基本思想是:通过把字母移动一定的位数来实现加密和解密.明文中的所有字母都在字母表上向后(或向前) ...
- Python的一个解释凯撒密码的程序
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' { Title:CaserCode Author:naiquan Type:crypto Detai ...
随机推荐
- 入门Kubernetes - 滚动升级/回滚
一.前言 上一篇文章中对yaml文件格式进行了解,并对k8s中各种主要资源通过yaml创建时的定义模板.接来下就进一步学习k8s的各种特点.并应用在示例中. 接下来先实现.Net Core Api程序 ...
- 20、nginx之ngx_http_upstream_module模块
nginx的ngx_http_upstream_module模块是用于nginx反向代理的,默认在安装nginx时已经被安装,ngx_http_upstream_module模块 的内容应放于 ngi ...
- 9.4、安装zabbix(3)
(10)监控mysql: 1)安装mariadb-server: [root@slave-node1 ~]# yum install mariadb-server [root@slave-node1 ...
- Devexpress-WPF初体验
最近使用wpf devexpress做一个wpf小项目,中间遇到了一些问题,这里记录下,同时也跟大家分享分享 1.devexpress安装 devexpress提供了很多控件,特别是各种形式的数据列表 ...
- vue cli3 使用elemet-plus
原文章: https://blog.csdn.net/qq_44827865/article/details/115457445 element-plus官方网站:https://element-pl ...
- AcWing 342. 道路与航线
#include<bits/stdc++.h> using namespace std; const int N=2e5+5; int h[N],cnt,to[N],nxt[N],vis[ ...
- Spring:Spring-IOC简介
想要了解控制反转( Inversion of Control ), 我觉得有必要先了解软件设计的一个重要思想:依赖倒置原则(Dependency Inversion Principle ). 什么是依 ...
- java设计模式(10):代理模式(Proxy)
一,定义: 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. 二,其类图: 三,分类一:静态代理 1,介绍:也就是需要我们为目标对象编写一个代理对象,在编译期就生成了这个代理对 ...
- 自己动手模拟spring的IOC
我们这里是模拟spring,主要模拟spring中的IOC功能,所以在此我们一样要在service层中定义dao的实例,当然不用new出来,我们就通过spring的IOC把这里的dao层注入进来.不要 ...
- easyui的combobox的onChange事件的实现
easyui的combobox的onChange事件的实现,直接上代码: <div style="display:inline;margin-left:15px;"> ...