凯撒加密Caesar cipher

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 凯撒加密Caesar cipher

凯撒加密Caesar cipher


凯撒加密的由来

凯撒加密正是凯撒大帝发明的,是一种古典的加密

凯撒率军征服高卢,袭击日耳曼和不列颠,古罗马开启了走出意大利,征服全欧洲的征程

仅用8年时间征服高卢后,凯撒率军越过卢比孔河,驱赶政敌,成为了罗马的独裁者

作为罗马帝国的奠基者,有人说他是罗马帝国第一位皇帝,而不是屋大维

凯撒加密是一种很实际应用中很容易破解的加密,是一种替换加密

加密方式

凯撒加密就是凯撒传递军事情报使用的加密方式

加密方式很简单,就是将每个字母用之后的第三个字母代替,没有之后第三个字母的X,Y,Z用A,B,C代替

后移三位是最经典的凯撒加密,也就是历史上凯撒大帝使用的加密方式

特殊的凯撒加密有不同的偏移量,不一定是3

python加密&解密

这种解密方式适用于知道偏移量的情况下进行解密

def encrypt_caesar(str,key=3):  #加密函数
    text=""
    for i in str:
        text+=chr(65+((ord(i)-65)+key)%26)
    return text
def decrypt_caesar(str,key=3):  #解密函数
    text=""
    for i in str:
        text+=chr(65+((ord(i)-65)-key)%26)
    return text

维吉尼亚密码

加密原理

它是16世纪的法国亨利三世王朝的维吉尼亚发明的,是从凯撒加密发展而来的

仔细观察这个密码字母表

每行被标记为了ABCDEFG......Z

而每行正是0到25偏移量的凯撒加密

维吉尼亚加密是有密钥的加密算法

密钥与明文,密文等长,就是密码字母表每行开头的标记ABCDEFG......Z,决定了对应位置的明文应该用哪一行密文进行加密

例子

明文:

HELLO

密钥:

GHRFD

加密过程:

第一个H按照密钥第一位(密码表第G行)加密,是N

第二个E按照密钥第二位(密码表第H行)加密,是L

第三个L按照密钥第三位(密码表第R行)加密,是C

第四个L按照密钥第四位(密码表第F行)加密,是O

第五个O按照密钥第五位(密码表第D行)加密,是R

密文:

NLCOR

替换密码的解密

替换密码有很多中不同的变种,我能可以提供线索,让计算机算法分析找到加密的规律,进行解密

这里提供一个解决自动替换密码求解的网站

https://quipqiup.com/

quipqiup是Edwin Olson的快速自动密码求解器。它可以解决报纸上常见的简单替换密码,包括密码(其中保留单词边界)和patristocrats(inwhi chwor dboun darie saren t)等难题。

根据buuctf上面的题目演示一下用法https://buuoj.cn/

题目1——凯撒?替换?呵呵!

题目给出了一个密文

MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}

我们知道CTF竞赛的题目要将结果用flag{}包裹

flag{flag内容(解密后的字符串)}

说明MTHL解密之后对应的字符应该是flag

这就是线索,需要填到网站内

MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}

MTHJ=flag

解出的第一个就是有实际意义的英语,就是明文

网站将单词间自动加了空格,提交时候需要去除

flag{substitutioncipherdecryptionisalwayseasyjustlikeapieceofcake}

题目2——变异凯撒

题目变异凯撒,说明没有使用一般的凯撒加密

我们可以找一下规律,首先密文不完全是字母,但是经典凯撒加密的密文一定都是字母,说明这个题目可能是ASCLL码表偏移,而不是字母表偏移

经典凯撒加密是字母和字母的偏移对应,如上图

观察一下ASCLL码表和字符串,可以感觉到我们的想法很可能正确

还是根据CTF题目的特点

afZ_应当对应flag

我们运行一下脚本看一下afZ_和flag的关系

text1="afZ_"
text2="flag"
for i in range(0,len(text1)):
    offset=ord(text2[i])-ord(text1[i])
    print(offset)

输出为

5

6

7

8

说明这个题目应该就是ASCLL码的偏移,偏移量从5开始递增

我们按照这个找出的加密原理写出解密脚本

text="afZ_r9VYfScOeO_UL^RWUc"
flag=""
for i in range(0,len(text)):
    flag+=chr(ord(text[i])+(i+5))
print(flag)

flag{Caesar_variation}

题目3-看我回旋踢

“synt{}“类似CTF比赛提交的格式”flag{}“

所以这应该是一种替换加密

根据synt与flag的关系分析一下加密的规则

text1="synt"
text2="flag"
for i in range(0,len(text1)):
    offset=ord(text1[i])-ord(text2[i])
    print(offset)

输出

13

13

13

13

说明字符串的偏移量是13

这是一种称为ROT13(回转13位)的密码,可以看作是偏移量是13位的特殊的凯撒加密

在英文论坛当中常用于妙语,八卦,脏话的加密

英文26个字母,偏移量是13,恰好将前13个字母换成了后13个字母,将后13个字母换成了前13个字母

可以使用在线解密工具

http://www.rot13.de/index.php

也可以自己编写解密脚本

text="synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}"
flag=""
for i in range(0,len(text)):
    if text[i] >= 'a' and text[i]<='z':
        flag+=chr(97+((ord(text[i])-97)+13)%26)
    else:
        flag+=text[i]
print(flag)

flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1}

相关文章
|
7月前
|
算法 Java 数据安全/隐私保护
使用 Spring Boot 进行加密和解密:SecretKeySpec 和 Cipher
【6月更文挑战第7天】在现代软件开发中,数据加密和解密是保护敏感信息的重要手段。本文将介绍如何在 Spring Boot 项目中使用 Java 的 SecretKeySpec 和 Cipher 类来实现对称加密和解密。
932 1
|
8月前
|
数据安全/隐私保护 C++
【C++】凯撒密码 实现加密与解密
【C++】凯撒密码 实现加密与解密
|
8月前
|
人工智能 算法 Java
凯撒加密的最简单的理解与实现(Java版)
凯撒加密的最简单的理解与实现(Java版)
141 0
|
算法 数据安全/隐私保护 Python
Python编程:实现凯撒密码加密解密
Python编程:实现凯撒密码加密解密
727 0
Python编程:实现凯撒密码加密解密
|
数据安全/隐私保护
web作业:凯撒密码之加密
/** @param words String @return String
94 0
|
PHP 数据安全/隐私保护
PHP脚本实现凯撒加(解)密
原文:PHP脚本实现凯撒加(解)密 今天在看某ctf时候遇到一题凯撒加密的题,然后看到write up里有这样一句 顿时感觉这题目有点坑啊,这要不写个脚本来跑要推到啥时候啊,于是又了本文: 1
1209 0
|
25天前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
1月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
1月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
59 10