古典密码之仿射(Affine)

您所在的位置:网站首页 仿射加密法例题详解 古典密码之仿射(Affine)

古典密码之仿射(Affine)

2024-07-11 00:42| 来源: 网络整理| 查看: 265

引言

还记得ctf入门时,做的第一道题目是跟仿射有关的,当时就感觉很神秘,很遗憾那道题目现在找不到了;后面随着学习的深入发现凯撒、ROT之类的都是仿射的子集,网上找到一个类似的题目:

例题 Crypto-GUET梦极光杯 ┌──────────────────────────────────────────┐ │ Simple Cipher │ │ 200 │ │ E(x)=(11x + 6) (mod 26) │ │ C="GJJQTYCLKPHEULGPFKQWDYLKQTHYLYWHQTU" │ │ flag内容为大写,用GUETCTF包裹 │ └──────────────────────────────────────────┘ 来源

https://www.cnblogs.com/ta0tie/articles/15585996.html

Writeup(WP) 来源中也是有解法,但是还是要提一下大厨 大厨,解密神器,在线的 https://gchq.github.io/CyberChef/,你也可以下载下来放在本地硬盘运行,不过记的经常去升级一下

PS:wp的说明和截图就要完整,又不涉及什么保密信息;互联网不就是分享精神吗?吐槽一下某些人的做法,总是最小化截图,很不利于新人学习。

在线工具,比如:http://www.metools.info/code/affinecipher183.html flag

GUETCTF{AFFINECRYPTOGRAPHYISVERYINTERESTING}

算法原理

仿射密码(Affine cipher)加密过程:

将纯文本字母表中的每个字母转换为0到m -1范围内的相应整数; 对每个字母数值进行如下算式计算(其中a和b是密码的密钥):E(x)=(ax + b)mod m 即将纯文本字母的整数值乘以a,然后将b加到结果中,最后我们取模数m(也就是说,当解除以m时取余数,或者取掉字母的长度,直到得到小于该长度的数字)。

例如,让我们使用密钥a = 5,b = 8加密明文“AFFINE CIPHER”:

首先,我们必须找到明文字母表中每个字母的整数值(以字母表中的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 找到的明文字母的整数值后,对这些值执行计算,在此例中,所需的计算为(5x + 8); 最后,我们必须确保所有答案均在mod 26中计算,并将整数转换回密文字母。 最后,得到的密文是“IHHWVC SWFRCP”。

仿射密码(Affine cipher)解密过程,使用解密F(x) = a^-1(x-b) (mod m)进行计算,即可得到对应的解密后的原文。 仿射密码仍为单字母表密码, 其依旧保留了该类别加密之弱处,当a=1,仿射加密为凯撒密码,因该加密方程可简化为线性移动。

python实现 ''' 仿射密码 (a,b) m = 26,字符集为大写字母 加密函数是E(x)= (ax + b) (mod m) 解密函数为D(x) = (a^-1)(x - b) (mod m),其中a^-1是a的乘法逆元 ''' #通过一个简单的遍历得到a的乘法逆元,也可以通过gmpy2库中的invert函数实现 def get_inverse(a): for i in range(1,27): if a*i%26==1: return i #加密 def encipher(a, b, p): c=[] for i in p: temp=((ord(i)-65)*a+b)%26+65 c.append(chr(temp)) print(''.join(c)) #解密 def decipher(a, b, c): a_inv = get_inverse(a) p=[] for i in c: temp=(((ord(i)-65)-b)*a_inv)%26+65 p.append(chr(temp)) print(''.join(p)) if __name__ == "__main__": a = 11 b = 6 message = 'GJJQTYCLKPHEULGPFKQWDYLKQTHYLYWHQTU' #encipher(a,b,message) decipher(a,b,message) 落之~


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3