#define N 26 //仿射变换默认模数为26 //加密算法 char *encode(char *c_str, int a, int b, int n); //解密算法 char *decode(char *m_str, int a, int b, int n); //设置数组coprime为存放与n互素的元素 void setCoprime(int coprime[], int n); //获取value1,value2的最大公约数 int...
步骤1:定义加密函数 defaffine_encrypt(text,a,b):encrypted_text=""forcharintext:ifchar.isalpha():# 判断字符是否为字母shift=a*(ord(char)-ord('A'))+b# 应用仿射公式encrypted_char=chr((shift%26)+ord('A'))# 规范字母范围encrypted_text+=encrypted_charelse:encrypted_text+=char# 非字母字符不...
运行结果为(此处以破解a=3, b=4时得出的密文): 如图所示,正确解出a, b再用(a*k)%26==1,求得k=9 用k=9,b=4进行解密可得出明文。 还可以通过差分分析进行破解。对于仿射密码来说,“差分”是模26减法,那么,在不知道两对明密文对(M1,C1)(M2, C2)的情况下,只需要知道M1-M2和C1-C2便可以确定a。...
仿射密码是一种代换密码,加解密公式如下 加密:C=E([a,b],p)=(ap+b)mod26C=E([a,b],p)=(ap+b)mod26 解密:p=D([a,b],C)=((C−b)/a)mod26p=D([a,b],C)=((C−b)/a)mod26 很显然不能靠人力来解密,只好求助于计算机程序,下面是我写的用Python解密的代码,输出结果后要用语言学的...
接下来,我们可以编写解密函数。解密函数与加密函数的逻辑类似,只是我们需要使用仿射密码的解密公式:P = (a_inv * (C - b)) % 26,其中P是明文,C是密文,a_inv是a的逆元。 ```python def decrypt(encrypted_text, key): decrypted_text = "" a, b = key a_inv = 0 for i in range(26): if ...
仿射密码破解程序的示例运行 在文件编辑器中按F5,运行affineHacker.py程序;输出应该如下所示: Hacking... (Press Ctrl-C or Ctrl-D to quit at any time.) Tried Key 95... (U&'<3dJ^Gjx'-3^MS'Sj0jxuj'G3'%j'<mMMjS'g) Tried Key 96... (T%&;2cI]Fiw&,2]LR&Ri/iwti&F2&$i&;lL...
1. 仿射密码的基本原理 仿射密码是一种单字母替换密码,其中每个字母被映射到另一个字母。它使用数学函数 E(x)=(ax+b)mod mE(x) = (ax + b) \mod mE(x)=(ax+b)modm 来加密明文,其中 aaa 和bbb 是密钥,mmm 是字母表的长度(对于英文字母表,m=26m = 26m=26)。解密过程则使用逆函数 D(y)...
第十章:加密和解密文件解释了如何编写从硬盘读取文件和向硬盘写入文件的程序。 第十一章:程序化检测英语描述了如何让计算机检测英语句子。 第十二章:破解换位密码结合前几章的概念,破解换位密码。 第十三章:仿射密码的模运算模块解释了仿射密码背后的数学概念。
这里直接上干货脚本,讲解请看我的视频。 仿射密码知识点 1)出题脚本: a = 7 b = 22 flag = 'flag{23a490bfcb767099e9ce48dee691a34b}' c='' for j in flag: if ord(j)>=ord("a") and ord(j)<=ord("z"): cha=ord(j)-ord('a') ...
1)初步了解古典密码 2)掌握仿射密码的实现 实验方法 根据下图仿射密码(变换)加解密的描述,用所熟悉的语言,完成实验内容、描述实验操作步骤、实验结果与实验心得。 实验环境 计算机语言:Python 开发环境:Pycharm 原理 实验内容 编程实现仿射密码,要求有加密步骤和解密步骤。若输入参数a,b不合法,则报错。