古典密码

古典密码学

前提是你 提交于 2019-12-21 09:21:47
古典密码学种类 移位密码(凯撒密码) 对于一个密码体制,必须满足一定的条件,下面所述的两个条件必须的: 对于加密体制而言,其加解密函数都要易于计算对于任何敌手而言,即使他获取了密文Y,也很难由此确定出对应的密钥K或密文 移位密码属于最简单的一种加密方法,其实现和原理都很简单,但是由于本身的问题,其密钥空间很小,而且又属于单表替换,所以安全性不高,易受来自穷举 以及词频等简单的密码攻击破解. 代换密码 代换密码也属于单表替换,其原理很简单,先制作出一张替换的表格,然后加密时根据表格替换明文,解密的时候,需要先制作出解密的替换表格,这个表格和 加密表格是对应的,对于26个字母而言,所有可能的替换方法达到26!种,密钥空间很大,所以利用穷举法不是很容易破解.但是,由于这种加密算法仍然属于单表替 换,所以仍然不能抵抗根据词频来破解密码这种方法. 仿射密码 仿射密码是移位密码的扩展,仿射密码是利用线性函数的一一对应的原理来实现的,其加密函数为e(x)=(ax+b) mod nMax (nMax为常数).对于加密函数而言, 其中的a是有限制的,需要a和nMax的最大公约数为1. 对于a的取值空间大小,可以由nMax的值计算出来,其值为φ(nMax)可由欧拉公式获得,所以其密钥空间大小 为nMax*φ(nMax). 对于nMax=60时,φ(60)=(2的2次方-2的1次方)*(3的1次方

三种古典密码

隐身守侯 提交于 2019-12-05 20:02:03
单表代替密码 仿射密码 仿射密码为单表代替密码,26个字母对应不同的数值,简单来说就是加法密码和乘法密码的结合,当下面式子中的a=1时就是凯撒密码了 A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 密码体制的五元组: {P、C、K、E、D} 对于仿射密码而言: \[ P=C=Z_{26} \] \[ K=\{(a,b) \in Z_{26}\times Z_{26}:gcd(a,26)=1\} \] 对于任意的 \(k=(a,b) \in K,X,Y \in Z_{26}\) \[ 加密:e_{k}(X)=(aX+b) \quad mod \quad 26 \] \[ 解密:d_{k}(Y)=a^{-1}(Y-b) \quad mod \quad 26 \] 其中 \(a^-1\) 是a关于模26乘法的逆,即 \(a \times b \quad mod \quad 26=1\) 实例 K=(3,7),加密"You are beautiful" # encoding="utf-8" # @yoloyanng #求乘法逆元 def get(a,b): if b==0: return 1,0

各种奇怪的古典密码

半腔热情 提交于 2019-12-05 17:46:03
各种奇怪的古典密码 转载至ctf-wiki:个人认为写的很好 https://ctf-wiki.github.io/ctf-wiki/ 培根密码 原理 培根密码使用两种不同的字体,代表 A 和 B,结合加密表进行加解密。 a AAAAA g AABBA n ABBAA t BAABA b AAAAB h AABBB o ABBAB u-v BAABB c AAABA i-j ABAAA p ABBBA w BABAA d AAABB k ABAAB q ABBBB x BABAB e AABAA l ABABA r BAAAA y BABBA f AABAB m ABABB s BAAAB z BABBB 上面的是常用的加密表。还有另外的一种加密表,可认为是将 26 个字母从 0 到 25 排序,以二进制表示,A 代表 0,B 代表 1。 下面这一段内容就是明文 steganography 加密后的内容,正常字体是 A,粗体是 B: T o en co de a mes s age e ac h letter of the pl a i nt ex t i s replaced b y a g rou p of f i ve of th e lett ers 'A' o r 'B' . 可以看到,培根密码主要有以下特点 只有两种字符 每一段的长度为 5 加密内容会有特殊的字体之分

古典密码总结

蹲街弑〆低调 提交于 2019-12-05 17:45:47
古典密码总结 转载至ctf-wiki:个人认为写的很好 https://ctf-wiki.github.io/ctf-wiki/ 古典密码分析思路 CTF 中有关古典密码的题目,通常是根据密文求出明文,因此采用 唯密文攻击 居多,基本分析思路总结如下: 确定密码类型:根据题目提示、加密方式、密文字符集、密文展现形式等信息。 确定攻击方法:包括直接分析、蛮力攻击、统计分析等方法。对于无法确定类型的特殊密码,应根据其密码特性选用合适的攻击方法。 确定分析工具:以在线密码分析工具与 Python 脚本工具包为主,以离线密码分析工具与手工分析为辅。 以上唯密文攻击方法的适用场景与举例如下: 攻击方法 适用场景 举例 直接分析法 由密码类型可确定映射关系的代换密码 凯撒密码、猪圈密码、键盘密码等 蛮力攻击法 密钥空间较小的代换密码或置换密码 移位密码、栅栏密码等 统计分析法 密钥空间较大的代换密码 简单替换密码、仿射密码、维吉尼亚密码等 实验吧 围在栅栏里的爱 题目描述 最近一直在好奇一个问题,QWE 到底等不等于 ABC? -.- .. --.- .-.. .-- - ..-. -.-. --.- --. -. ... --- --- flag格式:CTF{xxx} 首先,根据密码样式判断是摩斯电码,解密后得到 KIQLWTFCQGNSOO ,看着也不像 flag,题目中还有还有栅栏与

古典密码

我是研究僧i 提交于 2019-12-05 14:58:15
古典密码 转载至ctf-wiki:个人认为写的很好 https://ctf-wiki.github.io/ctf-wiki/ 简介 在古典密码学中,我们主要介绍单表替代密码,多表替代密码,以及一些其它比较有意思的密码。 值得一提的是,在古典密码学中,设计者主要考虑消息的保密性,使得只有相关密钥的人才可以解密密文获得消息的内容,对于消息的完整性和不可否认性则并没有进行太多的考虑。 拓展阅读 CTF 中那些脑洞大开的编码和加密 古典密码学发展史 古典密码——维基百科 通用特点 在单表替换加密中,所有的加密方式几乎都有一个共性,那就是明密文一一对应。所以说,一般有以下两种方式来进行破解 在密钥空间较小的情况下,采用暴力破解方式 在密文长度足够长的时候,使用词频分析, http://quipqiup.com/ 当密钥空间足够大,而密文长度足够短的情况下,破解较为困难。 凯撒密码 原理 凯撒密码(Caesar)加密时会将明文中的 每个字母 都按照其在字母表中的顺序向后(或向前)移动固定数目( 循环移动 )作为密文。例如,当偏移量是左移 3 的时候(解密时的密钥就是 3): 明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC 使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置