CTF-Crypto 密码原理及解密方法
文章目录
推荐综合加解密网址
CTF在线工具-CTF工具|CTF编码|CTF密码学|CTF加解密|程序员工具|在线编解码 (hiencode.com)
一.常见密码格式
(base64、32、16、36、58、62、85、91、92)
名称 | 密文 | 明文 | 特点 |
---|---|---|---|
栅栏密码 | fg2ivyo}{2s3_o@aw__rcl@ | flag{w22_is_v3ry_cool} | 1.长度一般不会太长 2.一般不会出现原来没有的字符(可能会出现用@打乱的现象) |
base64 | ZmxhZ3toZWxsb193b3JsZCF9IAo== | flag{hello_world!} | 后面会有= |
base16 | 666C61677B6D795F6E616D655F482121487D | flag{my_name_H!!H} | 只由大写字母和数字组成 |
Unicode | \u0066\u006c\u0061\u0067\u007b\u0069\u005f\u0077\u0069\u006c\u006c\u005f\u006b\u0069\u006c\u006c\u005f\u0079\u006f\u0075\u0021\u007d | flag{i_will_kill_you!} | 每一字符都用一个5位字符编码表示,并用\分割 |
urlencode | %68%61%63%6b%65%72%44%4a | hackerDJ | |
词频分析 | Eg qnlyjtcnzydl z umaujejmjetg qeydsn eu z bsjdtx tw sgqtxegc al kdeqd mgeju tw yrzegjsoj zns nsyrzqsx kejd qeydsnjsoj | Ew ltm fgtk jds kzl tw sgqtxegc m kerr csj jds wrzc kdeqd eu qrzuueqzr-qeydsn_eu_gtj_usqmnejl_du | 长度很长 |
HTML编码 | <script>alert(123)</script> | <>实体化编码 | |
ASCII<–>进制(ASCII编码转换) | 二进制:01101000 01100101 01101100 01101100 01101111;十进制:104 101 108 108 111;十六进制:68 65 6c 6c 6f | hello | |
进制之间的转换 |
名称 | 密文 | 明文 | 特点 |
---|---|---|---|
AES256 | 92tNCj7EuKDSuz5GXez50Q== | flag{hello} | 基于三个分组密码构建的:AES-128,AES-192和AES-256。这些密码中的每一个都使用128位,192位或256位加密密钥对128位数据块进行加密和解密。 |
MD5 | 9dba6f1459dd1cd582d56fe3de8ae5ea | flag{123} | 32位加密密码,数字和小写字母 |
SHA1(SHA有很多) | aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d | hello | SHA1是一种密码散列函数,可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。该算法输入报文的长度不限,产生的输出是一个160位的报文摘要。输入是按512 位的分组进行处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。 |
二.古典密码
凯撒密码
凯撒密码一般适用于26个英文字母。根据偏移量来进行加密。如图所示,当偏移量=3。即是A-D,B-E。
1.原理
密钥:K
加密解密过程:
2.在线加密解密网站:
https://www.qqxiuzi.cn/bianma/kaisamima.php
http://www.metools.info/code/c70.html
http://www.atoolbox.net/Tool.php?Id=778
仿射密码
1.原理
密钥:(a,b),其中a与26互质。
加密解密过程:
仿射密码是一种表单代换密码,字母表的每个字母相应的值使用一个简单的数学函数对应一个数值,再把对应数值转换成字母。
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
加密函数:E(x) = (ax + b) (mod m),其中 a与b互质,其中 a与m互质,m是编码系统中字母的个数(通常都是26)。
解密函数:D(x) = (a’x - b) (mod m),其中 a’是 a 在群的乘法逆元。
2.在26上所有与26互质元素的乘法逆元
3.在线加密解密网站:
http://www.atoolbox.net/Tool.php?Id=911
4.解密脚本:
import primefac
def affine_decode(c,a,b,origin="abcdefghijklmnopqrstuvwxyz"):
r=""
n=len(origin)
ai=primefac.modinv(a,n)%n
for i in c:
if origin.find(i)!=1:
r+=origin[(ai*(origin.index(i)-b))%n]
else:
r+=i
return r
print affine_decode("ihhwvcswfrcp",5,8)
def affine_guessab(m1,c1,m2,c2,origin="abcdefghijklmnopqrstuvwxyz"):
x1=origin.index(m1)
x2=origin.index(m2)
y1=origin.index(c1)
y2=origin.index(c2)
n=len(origin)
dxi=primefac.modinv(x1-x2,n)%n
a=dxi*(y1-y2) % n
b=(y1-a*x1)%n
return a,b
print affine_guessab("a","i","f","h")
埃特巴什码
1.加密解密原理:使用字母表倒数第n个字母代替第n个字母
培根密码
1.加密解密原理:使用两种字符,每一段长度为5.
2.在线加密解密网址:
https://tool.bugku.com/peigen/
棋盘密码
1.加密原理:
波利比奥方阵
假设我们需要发送明文信息“Hello”,找到H对应2行3列,则加密为23,e加密为15,以此类推,得到密文:2315 31 31 34。
【双密码(Bifid Cipher)】
特征/特点:双密码(Bifid Cipher)结合了波利比奥斯方阵换位密码,并采用分级实现扩散,这里的“双”是指用2个密钥进行加密。双密码是由法国Felix Delastelle发明,除此之外Felix Delastelle还发明了三分密码(Trifid Cipher),四方密码(Four-Square Cipher)。还有一个两方密码(Two-Square)与四方密码类似,共轭矩阵双密码(Conjugated Matrix Bifid Cipher)也是双密码的变种。
在线解密&工具: http://www.practicalcryptography.com/ciphers/adfgx-cipher/
ADFGX密码
这样加密的话Hello的密文就是:DD XF AG AGDF。
ADFGVX密码
希尔密码
1.加密解密原理:
使用每个字母在字母表中的顺序作为其对应数字。再将铭文转换为