密码学入门,我们介绍一些简单的密码
brainfuck
这是一个完备的图灵语言
Brainfuck基于这样一台机器。它具有一列初始化为0的数组(数组长度最初要求是30,000,但这个标准不是必要的)和一个初始指向第一个元素的指针。
该语言总共只有8个命令,除此之外所有其他字符都会被忽略
| 1 | ><+-.,[] | 
所以看到了这八个字符组成的,就是brainfuck
| 命令 | 功能 | C语言 | 
|---|---|---|
| > | 指针右移一个元素 | p++; | 
| < | 指针左移一个元素 | p–; | 
| + | 指针当前所指元素加1 | *p++; | 
| - | 指针当前所指元素减1 | *p–; | 
| . | 输出指针所指元素对应字符 | putchar(*p); | 
| , | 输入字符的ASCII码值到指针所指元素 | *p=getchar(); | 
| [ | 若指针所指元素为0,则跳转到对应 | ‘]’处继续执行 while(*p){ | 
| ] | 若指针所指元素不为0,则跳转至对应 | ‘[‘处继续执行 } | 
其实说那么多,也不会自己动手算,让我们上工具
| 1 | ++++++++[>>++>++++>++++++>++++++++>++++++++++>++++++++++++>++++++++++++++>++++++++++++++++>++++++++++++++++++>++++++++++++++++++++>++++++++++++++++++++++>++++++++++++++++++++++++>++++++++++++++++++++++++++>++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>++++++.>----.<-----.>-----.>-----.<<<-.>>++..<.>.++++++.....------.<.>.<<<<<+++.>>>>+.<<<+++++++.>>>+.<<<-------.>>>-.<<<+.+++++++.--..>>>>---.-.<<<<-.+++.>>>>.<<<<-------.+.>>>>>++. | 
来,告诉我flag
| 1 | flag{Oiiaioooooiai#b7c0b1866fe58e12} | 
ook
ook的长这样
| 1 | ..... ..... ..... ..... !?!!. ?.... ..... ..... ..... .?.?! .?... .!... | 
答案:
| 1 | flag{bugku_jiami} | 
Caesar’s Secert 凯撒密码
凯撒密码,古老的密码
说白了就是字符偏移
给一个偏移量
所有的字符进行偏移
例如偏移量为1,abc进行偏移后,字符串为bcd
例如偏移量为2,abc进行偏移后,字符串为cde
例如偏移量为3,abc进行偏移后,字符串为def
这么说明白了吧
那么上工具 Caesar
| 1 | kqfl{hf3x4w'x_h1umjw_n5_a4wd_3fed} | 
给我flag
| 1 | flag{ca3s4r's_c1pher_i5_v4ry_3azy} | 
栅格密码
栅格密码更简单了,一般都是2的倍数,,因为他要分两层
比如加密字符串为acbd
将它沿中间拆开,则为
| 1 | a c | 
上下交替合并,解密结果为abcd
321,上链接,栅格密码
| 1 | fa{ereigtepanet6680}lgrodrn_h_litx#8fc3 | 
等一个flag
| 1 | flag{reordering_the_plaintext#686f8c03}@ | 
维吉尼亚密码
维吉尼亚密码是一个多字母替代密码。
维吉尼亚密码是一种简单的多表代换密码(由26个类似的Caesar密码的代换表组成),
即由一些偏移量不同的恺撒密码组成,这些代换在一起组成了密钥。
维吉尼亚加密原理
核心:为了掩盖字母使用中暴露的频率特征,解决的办法就是用多套符号代替原来的文字。
密码对照表如下图

密钥中的字母为行,明文中的字母为列。
所以关键是找key
key怎么来呢?
找密文中相同字符之间的间隔,大概率就是密钥的倍数
那么我们再简单一点
一些入门签到题,会给一点提示,例如下面这题
| 1 | pqcq{qc_m1kt4_njn_5slp0b_lkyacx_gcdy1ud4_g3nv5x0} | 
其中pqcq很明显是flag
我们可以得到kfck
k好像重复了,猜一下kfc是密钥
得到原文
| 1 | flag{la_c1fr4_del_5ign0r_giovan_batt1st4_b3ll5s0} | 
摩斯密码
行置换
每隔X个数字一组,按固定顺序读取
一般都会给出头部份的拼接
比如下题
215643
| 1 | lf5{ag024c483549d7fd@@1} | 
我们要拼接flag
根据215643可得
| 1 | flag{5 | 
后续每6个一处理
那么我们可以解出
| 1 | flag{52048c453d794df1}@@ | 
一把梭工具
猪圈密码
上这 https://www.metools.info/code/c90.html
很古怪的字符

RSA解密
[CTF密码学]RSA相关题目解题方法与python脚本总结(附例题)
说简单一点
| 1 | n(两个大素数p、q的乘积) | 
思路一
有n,我们要做的就是解出p和q
 
        