crypto密码学知识大纲

概述

ctf-wiki https://ctf-wiki.github.io/ctf-wiki/crypto/introduction/

基本分类

古典密码

识别密码类型 加密方式,字符类型
##单表替换加密
特点:明文密文一一对应
破解:密钥空间小,暴力破解(2的64次方以内);
密文长度长,词频分析(http://quipqiup.com/)
工具:CAP4
JPK
Cryptool

凯撒密码

明文中不同的偏移量,按照字母表中固定顺序
此外,还有还有一种基于密钥的凯撒密码 Keyed Caesar。其基本原理是 利用一个密钥,将密钥的每一位转换为数字(一般转化为字母表对应顺序的数字),分别以这一数字为密钥加密明文的每一位字母
在这里插入图片描述
JPK 解密凯撒
此图为解密知道密钥的凯撒,在空白框内键入密文,然后选择keyed Caesarsh输入密钥
还可以进行base64 等转换,功能挺强大

移位密码

字母和数字,特殊字符都能处理,ASCII表进行

atbash cipher(埃特巴什)

在这里插入图片描述
词频分析
http://www.practicalcryptography.com/ciphers/classical-era/atbash-cipher/

简单替换密码

每个明文字母对应唯一的一个且不同的字母,完全混乱,26!数量太庞大
一般词频分析http://quipqiup.com/

仿射密码

加密函数 E ( x ) = ( a x + b ) ( m o d m ) E(x)=(ax+b)(mod m) E(x)=(ax+b)(modm)
其中x为明文按照某种编码得到的数字(比如说可以就按照字母表的顺序),m为编码系统中字母的个数
解密函数 D ( X ) = a ( − 1 ) ( x − b ) D(X)=a^(-1)(x-b) D(X)=a(1)(xb)
首先了解什么是乘法逆元及求法?
如果有 a b ≡ 1 ( m o d p ) ab≡1(modp) ab1(modp),则称b是mod p意义下a的乘法逆元
比如 2 × 3 = 1 ( m o d 5 ) 2 \times 3=1(mod 5) 2×3=1(mod5),则称3是mod 5下2的乘法逆元
所以 ( E ( x ) − b ) ∗ a ( − 1 ) (E(x)-b)*a^(-1) (Exb)a(1)就能恢复x
求逆元,可以在Python中加载gmpy2

欧拉函数:
在数论中,对于正整数N,少于或等于N ([1,N]),且与N互质的正整数(包括1)的个数,记作φ(n)
φ ( x ) = x ( 1 − 1 / p ( 1 ) ) ( 1 − 1 / p ( 2 ) ) ( 1 − 1 / p ( 3 ) ) ( 1 − 1 / p ( 4 ) ) … . . ( 1 − 1 / p ( n ) ) φ(x)=x(1-1/p(1))(1-1/p(2))(1-1/p(3))(1-1/p(4))…..(1-1/p(n)) φ(x)=x(11/p(1))(11/p(2))(11/p(3))(11/p(4))..(11/p(n))其中p(1),p(2)…p(n)为x

的所有质因数;x是正整数; φ(1)=1(唯一和1互质的数,且小于等于1)。

注意:每种质因数只有一个。

φ ( 10 ) = 10 × ( 1 − 1 / 2 ) × ( 1 − 1 / 5 ) = 4 φ(10)=10×(1-1/2)×(1-1/5)=4 φ(10)=10×(11/2)×(11/5)=4;

     1 3 7 9

破解:
首先特点一般都是26个字母,这种密码由两种参数来控制,如果我们知道其中任意一个参数,那我们便可以很容易地快速枚举另外一个参数得到答案
在这里插入图片描述
或者知道密文对应的两个不同的明文,则可以根据上式,求出a,然后可以枚举求出b

例子:TWCTF 2016 super_express ??

多表替换加密

维基利亚密码

已知密钥 可以直接用CAP4破解
在这里插入图片描述
未知密钥
https://www.mygeocachingprofile.com/codebreaker.vigenerecipher.aspx
https://www.guballa.de/vigenere-solver

hill密码

工具cap4

培根密码

只有两种字符,长度为5的倍数

栅栏密码

破解 可以Python暴力破解
这里发现了一个新大陆,国内和国外的栅栏竟然不一样,
http://www.practicalcryptography.com/ciphers/classical-era/rail-fence/
http://ctf.ssleye.com 这个解密工具也是根据国外的栅栏算法进行的
在线解的栅栏网站,国外的栅栏式“ V ”型进行解密,而国内一般是矩形的排列
在这里插入图片描述
7个作为一栏,然后在底部的是两栏共用,最后按照行从左至右的顺序进行加密
所以加密后的结果就是 kzna{blnl_abj_lbh_trg_vg}
变换成了类似 flag{} 的形式,然后想着凯撒解密
get。
PS:
此题的知识盲区就是对栅栏密码的了解只在矩形形式上,国外哪种V型不了解,而且是用其进行加密,以后遇到类似的可以试着不一定是解密,也可能是加密。

01248 云影密码

使用 0,1,2,4,8 四个数字,其中 0 用来表示间隔,其他数字以加法可以表示出 如:28=10,124=7,18=9,再用 1->26 表示 A->Z
只有01248四个数字

键盘密码

在这里插入图片描述
电脑键盘加密
例子:0ctf 2014 classic
2017 xman 选拔赛 一二三 木头人
阿里彩蛋,消失的三重密码(quip qiup)
2017 seccon vigenere3d

对称密码

加密和解密使用的密钥相同,需要传输密钥

流密码

流密码一般逐字节或者逐比特处理信息。一般来说

流密码的密钥长度会与明文的长度相同。
流密码的密钥派生自一个较短的密钥,派生算法通常为一个伪随机数生成算法。
伪随机数生成器(PRNG)
线性同余寄存器
例子:Google woodman
(比特位思想)
https://github.com/ctf-wiki/ctf-challenges/tree/master/crypto/streamcipher/prng/2016_google_ctf_woodman
线性反馈移位寄存器
例子:2018 强网杯streamgame1
https://ctf-wiki.github.io/ctf-wiki/crypto/streamcipher/fsr/lfsr/#2018-streamgame1
https://blog.csdn.net/qq_39153247/article/details/80144695
1.分析flag 的比特位 32,在范围内,可以暴力破解
2.矩阵变换,从a 0-a n-1 ,经过一次线性变换 a 1 -a n,输出an, 经过n次变换后,a n- a 2n-1,
矩阵中表示,a0*T^n=an ,从而乘以T^n的逆,得a0
非线性移位寄存器
例子:2018强网杯streamgame3
特殊流密码 RC4

块密码

DES
输入64位,输出64位,密钥64位
例子:2018 N1CTF N1ES
AES
攻击攻击 积分攻击、碰撞攻击、不可能攻击
例子:2018国赛 Crackmec
simoon block cipher
例子:
ECB
不同明文分组的加密
例子:2016 ABCTF aes-mess
https://github.com/ctfs/write-ups-2016/tree/master/abctf-2016/crypto/aes-mess-75
e220eb994c8fc16388dbd60a969d4953f042fc0bce25dbef573cf522636a1ba3fafa1a7c21ff824a5824c5dc4a376e75
对这个判断明文之间的长度,可以分为三段
CBC
padding Oracle attack
例子:2017 HITON Secret Server
https://github.com/p4-team/ctf/tree/master/2017-11-04-hitcon/secret_server
2017 SECCON Simon and Speck Block Ciphers

非对称密码

RSA

在这里插入图片描述
然后 公钥为N+e,私钥为N+d,的拼接,
在这里插入图片描述进行加密,其中n为消息经过某种编码转换成的数字,
在这里插入图片描述进行解密,所以知道N,e,d就能解出
RSA的证明,可以看ctf-wiki
工具:RSAtool 生成私钥
在这里插入图片描述
RSA Converter
根据给定密钥对,生成pen.m文件(存储证书和密钥,实质上是base64编码的二进制内容)
根据n e d 得出p q
openssl
查看公钥文件
在这里插入图片描述
factor.db网站分解整数,yafu工具分解
Python 库 :primefac(整数分解库)
gmpy2
pycrypto
例子:
Jarvis OJ - Basic - veryeasyRSA
https://github.com/ctf-wiki/ctf-challenges/tree/master/crypto/asymmetric/rsa/rsa-theory/JarvisOJ-Basic-veryeasyRSA
这道题直接给出了p , q ,e ,让求d,直接可以在Python中运用gmpy2库
gmpy2.invert(e,r),此命令可以求e关于r的逆元即d
2018 CodeGate CTF Rsababy
https://github.com/ctf-wiki/ctf-challenges/tree/master/crypto/asymmetric/rsa/rsa-theory/2018-codegate-rsababy
对于这种根据RSA的原理来解题要分利用充分利用RSA中的已知条件e和d的逆元关系,即
在这里插入图片描述,然后试着分解N,或找出N与其他某数的公约数,求出p
所以呢,此题中变量g中包含d,不妨
在这里插入图片描述这样ed就能发挥作用,
在这里插入图片描述
根据RSA解密的原理,消去ed,
在这里插入图片描述
把上面的第2个算式带入第3个,并把模展开,
然后看见在这里插入图片描述,可能想到费马小定理(费马小定理(Fermat’s little theorem)是数论中的一个重要定理,在1636年提出,其内容为: 假如p是质数,且 g c d ( a , p ) = 1 gcd(a,p)=1 gcd(a,p)=1
那么 a ( p − 1 ) ≡ 1 ( m o d p ) ) a(p-1)≡1(mod p)) a(p1)1(modp))
即:
在这里插入图片描述所以P能整除在这里插入图片描述,把在这里插入图片描述这个式子带入进去,p能整除在这里插入图片描述,然后根据 p ∣ ( a + b ) p|(a+b) p(a+b), p ∣ a p|a pa能推出 p ∣ b p|b pb,所以在这里插入图片描述
在这里插入图片描述

所以
在这里插入图片描述
gmpy2.powmod(a,b,c)求 a^b mod c
因此根据这个能求出来。

模数分解
例子:模数分解-光滑
smooth:Google一哈 光滑数是可以因式分解为质数相乘的正整数
primefac模块

哈希函数

MD5

在这里插入图片描述
MD5函数的初始IV,可以012345这样的顺序记忆
http://www.cmd5.com/ 破解

SHA1

在这里插入图片描述
初始IV
https://alf.nu/SHA1 破解
hashcat https://hashcat.net/hashcat/

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据提供的引用内容,E220-400MM22S是一个无线串口模块(UART),采用了LoRa扩频技术,基于LLCC68芯片方案设计。它具有多种传输方式,工作在410.125~493.125MHz频段(默认433.125MHz),支持TTL电平输出,兼容3.3V和5V的IO口电压。在硬件配置时,需要将M1和M0设置为1,同时需要注意以下几点配置注意事项:配置上位机以十进制显示,同一网络下的Lora模块需配置为同一信道(0-83代表总共84个信道),同一网络下的Lora模块应配置为同一密钥,不同Lora模块的地址应加以区分,传输方式根据需要选择,配置完成后修改M1和M0配置为传输模式。\[2\]\[3\] #### 引用[.reference_title] - *1* [LoRa模块(内置MCU),亿百特E22-400T30S,广播监听、定点传输、中继组网](https://blog.csdn.net/StudyPower_Max/article/details/124106496)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [基于E220-400T30D模块实现简单的Lora无线通信](https://blog.csdn.net/xiaopikadi/article/details/121545657)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值