CTF-Crypto-各种密码原理及解密方法
一.常见密码格式(太懒了,待补充)
名称 | 密文 | 明文 | 特点 |
---|---|---|---|
栅栏密码 | 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 | 长度很长 |
二.古典密码
凯撒密码
凯撒密码一般适用于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互质。
加密解密过程:
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