Easy Crypto 专题总结
古典密码:
1.1概念:
古典密码是密码学中的其中一个类型,其大部分加密方式都是利用【置换式密码】或【代换式密码】,有时则是两者的混合。虽然其历史中经常使用,但现代已经很少使用,大部分的已经不再使用了。
1.2古典密码的分类:
古典密码主要分为两大类:
1.2.1 置换式密码
置换:根据一定的规则对原文进行重新排列,像洗牌一样。
1.2.2代换式密码
代换:使用一个一一映射代换表(即只能一对一,不能一对多或者多对一)建立一个替换规则。例如下表:
常见的代换式密码:凯撒密码,维吉尼亚密码等等。
接下来会主要介绍一下这几种常见的古典密码。
1.3常见古典密码介绍:
单表代换密码
1.3.1 凯撒密码(Caeser)
在历史上,由于凯撒曾经使用这种密码与其将军们来联系,所以用凯撒来命名这种密码。
根据图片来了解加密原理。凯撒密码一般适用于26个英文字母。根据偏移量来进行加密。如图所示,当偏移量=3。即是A-D,B-E。
python代码如下:
加密:
string = input("Enter a string\n")
string= str.upper(string)
for x in string:if(x==' '):print(' ',end='')elif(ord(x)-ord('A')+3 >= 26 ):print(chr(ord(x)-26+3), end='')else:print (chr(ord(x)+3), end='')
解密:
string = input('Enter Decode text: ')
string = str.upper(string)for x in string:if(x==' '):print(' ',end='')elif(ord(x)-ord('A')-3<0):print(chr(ord(x)-3+26), end='')else:print(chr(ord(x)-3), end='')
1.3.2 仿射密码
数学公式为:
而在放射密码的求解中需要求解逆元。
python代码如下:
'''
仿射密码
m = 52
字符集为小写和大写字母
'''
import string
def encrypt(k1,k2,message):dic = string.ascii_lettersc = []for i in message:if i.islower():num = ord(i)-ord('a')c.append(dic[(num*k1+k2)%52])elif i.isupper():num = ord(i)-ord('A')+26c.append(dic[(num*k1+k2)%52])else:c.append(i)print(''.join(c))def decrypt(k1,k2,message):for i in range(52):if k1*i%52==1:inv = ibreakdic = string.ascii_lettersm = []for i in message:if i.islower():num = ord(i)-ord('a')m.append(dic[inv*(num-k2)%52])elif i.isupper():num = ord(i)-ord('A')+26m.append(dic[inv*(num-k2)%52])else:m.append(i)print(''.join(m))message = 'gVEXGT iDIT' #待加密或解密的消息
a = 5 # key的范围0~51之间
b = 29 # key的范围0~51之间
# encrypt(a,b,message)
decrypt(a,b,message)
真题:Buuctf 小学生的密码学
在线解密网站:http://www.atoolbox.net/Tool.php?
1.3.3 四方密码
介绍:
四方密码是一种对称式加密法,由法国人Felix Delastelle(1840年–1902年)发明。
这种方法将字母两个一组,然后采用多字母替换密码。 [1]
四方密码用4个5×5的矩阵来加密。每个矩阵都有25个字母(通常会取消Q或将I,J视作同一样,或改进为6×6的矩阵,加入10个数字)。
例子:
选两个密钥,example和keyword。去掉重复的字母。就是example变成exampl。余下的字母顺序存入矩阵即可
加密矩阵放右上和左下。
加密步骤。把字符串按两个字母一组分开
Helloworld
He ll ow or ld
找第一组第一个字母在左上角矩阵的位置:
找第一组第二个字母在右下角矩阵的位置:
先找和一个字母同横的,和第二个字母同直的
第一个字母同直,第二个字母同横的
得到he加密后为FY
如此可得接下来,最后就是
he lp me ob iw an ke no bi
FY GM KY HO BX MF KK KI MD
真题:Buuctf 四面八方
在线解密网站:http://ctf.ssleye.com/four.htm
1.3.4 培根密码
培根密码直接根据表中的字母进行转换。
密文一般只含有a和b字母
真题:攻防世界crypto新手-不仅仅是morse
在线解密网站:https://tool.bugku.com/peigen/
图表
1.3.5 标准银河字母
标准银河字母(Standard Galactic Alphabet)出自游戏《指挥官基恩》系列。是系列中使用的书写系统。这是一个简单的替代暗号,用不同的符号取代拉丁字母。SGA可以在不同的语言中使用,比如在游戏《Minecraft》,《指挥官基恩》中。
对于该类密码,只需要对照图表进行翻译即可:
1.3.6 圣堂武士密码:
圣堂武士密码(Templar Cipher)是共济会的“猪圈密码”的一个变种,一直被共济会圣殿骑士用。
直接根据图片上的直接翻译出字母即可:
1.3.7 猪圈密码:
猪圈密码(亦称朱高密码、共济会暗号、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码。即使使用符号,也不会影响密码分析,亦可用在其它替代式的方法。
直接图片替换字母即可
真题:Buuctf 萌萌哒的八戒 [MRCTF2020]古典密码知多少
1.3.8 当铺密码:
当铺密码 [1] 就是一种将中文和数字进行转化的密码,算法相当简单:当前汉字有多少笔画出头,就是转化成数字几。例如:
王:该字外面有 6 个出头的位置,所以该汉字对应的数字就是 6;
口:该字外面没有出头的位置,那就是0;
人:该字外面有 3 个出头的位置,所以该汉字对应的数字就是 3;
以此类推 ....
下面是一段由当铺密码组成的字符:
密文:王夫 井工 夫口 由中人 井中 夫夫 由中大
对应:67 84 70 123 82 77 125
1.3.9跳舞的小人
这个密码在《福尔摩斯探案全集》里出现过,当时是利用字频分析破解该密码,具体加密如下图:
1.3.10希尔密码
希尔密码(Hill Cipher)是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。每个字母当作26进制数字:A=0, B=1, C=2... 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果MOD26。
在线解密网站:http://www.atoolbox.net/Tool.php?
python代码如下:
import numpy as np
m = 'YOURPINNOISFOURONETWOSIX' #明文
a = np.matrix([[11,2,19],[5,23,25],[20,7,17]]) #密钥LCTFXZUHR
num_m = []
temp = []
count = 1
for i in m: #将明文分为三个一组temp.append(ord(i)-ord('A'))if count % 3 == 0:num_m.append(temp)temp = []count += 1
mat_m = [np.matrix(i).T for i in num_m] #将明文分组转换为向量形式
mat_c = [a * i % 26 for i in mat_m] #得到密文分组的向量形式
num_c = []
temp = []
for i in mat_c: #将密文向量转换为列表形式,且合并到一个列表temp = i.tolist()for j in range(3):num_c.append(temp[j][0])
c = [chr(i+ord('A')) for i in num_c]
print(''.join(c)) #连接成字符串,输出密文
未待完续。。。
Easy Crypto 专题总结相关推荐
- 记一次院赛CTF的Crypto和Re题(入门)
目录 Crypto easy crypto bAcOn 敌军密报 Re easy re 跳到对的地方 简单的XOR 多密码表替换 Crypto easy crypto 首先,这个可以很容易的看出这是一 ...
- SNARK Design
1. 引言 主要参考Justin Thaler 2022年8月在a16z crypto专题研讨会上的系列讲座: SNARK Design, Part I, with Justin Thaler | a ...
- Rollup项目的SNARK景观
1. 引言 前序博客有: SNARK Design 主要参考Justin Thaler 2022年8月在a16z crypto专题研讨会上的系列讲座: SNARK Design, Part II, w ...
- Cumtctf2021初夏赛
web web签到 根据返回版本信息 PHP/8.1.0-dev,搜索可知是存在后面的版本 验证存在后门 ls cat flag.php 别大E admin/admin弱口令登录,得到flag在fla ...
- 校内CTF比赛WriteUp
Web 签到2 口算小天才 easy php 录取查询 我爱python Crypto easy crypto bAcOn Re easy re 跳到对的地方 简单的xor Pwn easy pwn ...
- CUMT平台的部分题解
前言 最近在上网路安全实验课程的时候,其中一个任务就是完成这里面的题目,我还是记录一下吧,,到时候补充到实验报告里面 basic部分 decode 这个题目下载之后是一个压缩包,但是里面什么东西也没有 ...
- ISCW LAB综合实验
最近学到ISCW的最后几节,看了张sir的LAB视频,因此就依葫芦画瓢,认真学习了这个综合实验,花了两天时间终于完成这个实验了和这份实验日志..命令都是自己打出来的,自己辛苦,方便大众..稍后我会将每 ...
- CUMTCTF2017入门赛-Aegis writeup
Basic 签到题 10 根据题目,百度得知,使用本地hosts文件进行域名解析.(虽然用hosts翻过墙,但并不知道原来是这么一回事) WIN10 hosts目录:C:\Windows\System ...
- 2022年 HSC-1th中CRYPTO的Easy SignIn
2022年 HSC-1th中CRYPTO的Easy SignIn 下载附件,一个 txt 文本: 5445705857464579517A4A48546A4A455231645457464243566 ...
最新文章
- Oracle10g 回收站及彻底删除table : drop table xx purge
- 两个jQuery冲突了怎么办
- sqlserver临时表
- Swift - 移除页面视图上的所有元素
- gacutil.exe Path
- 智能家居的尴尬:概念比用户火
- struts OGNL表达式
- Springboot(java)程序部署到k8s
- 方法二 NTC热敏电阻转换温度的计算方式
- php打开EXCEL过慢,打开excel很慢,编辑某个工作表很卡
- Git 学习(篇六 --储藏与清理)
- Wincc 7.5 SP1使用VBS创建Excel日报表并显示在画面
- Linux下C/C++实现(网络流量分析-NTA)
- 2021年制冷与空调设备运行操作新版试题及制冷与空调设备运行操作免费试题
- 回归损失函数2 : HUber loss,Log Cosh Loss,以及 Quantile Loss
- 基于Altium Designer 20设计双层印刷电路板的详细步骤(待写)
- 发现易语言一个可笑的错误,百思不得其解
- 2023年社工工资多少钱一月 能领多少补贴
- 阿里云配置通配符证书
- 手机误删的照片怎么恢复
热门文章
- 虚拟服务器nat模式,nat模式虚拟机宿主机相互ping通
- 莫言称获奖是文学的胜利 批判社会黑暗凌厉严肃-莫言-诺贝尔文学奖-出国
- Linux常用 学习笔记
- 床垫上面直接铺床单吗
- python import readline_Python学习笔记6(Windows下readline模块安装)
- Survivor区放不下存活对象,那么存活对象直接就分配到老年代?
- php居中文字代码怎么写,文字居中的css代码是什么
- 比亚迪新能源汽车销量环比倍增,预示中国汽车共同围攻特斯拉
- 后浪来袭!阿里产出“第二代”容器技术手册及脑图,这也太香了吧
- python treemap_TreeMap简介