心理培训心得
...
RSA-大礼包
解密过程 我们需要批量读取文件,并且分析每个帧内1024bit模数N | 1024bit加密指数e | 1024bit密文mem^{e}me mod N是否存在相互关系 1234import osfrom pyexpat.errors import messagesimport gmpy2 首先我们设置4个列表,分别存储N,e,c,m 12345n_list = {}e_list = {}c_list = {}m_list = {} 其次我们需要读取文件,然后分析每个帧内的N,e,c,m 12345678910def read_file(): for i in range(21): filename = f'Frame{i}' with open(filename, 'r') as f: n = int(f.read(256).strip(), 16) ...
中国剩余定理
信息安全基础与密码学综合实验 实 验 报 告(二) 中国剩余定理 一、实验目的(包括实验环境、实现目标等等) 实验环境:Python 3.11.3 实现目标:根据中国剩余定理的原理,编写程序进行一次同余方程的求解,并且基于给定的大整数进行测试、验证。 二、方案设计 背景 本实验旨在通过代码实现中国剩余定理来解决同余方程组的问题。中国剩余定理是数论中的一个重要定理,它提供了一种在模数互素的情况下,求解多个同余方程组的方法,十分便捷。 原理(中国剩余定理) 设正整数 ( m1,m2,…,mkm_1, m_2, \ldots, m_km1,m2,…,mk ) 两两互素,对任意整数 ( $a_1, a_2, \ldots, a_k $),一次同余方程组: {x≡a1(modm1)x≡a2(modm2)⋮x≡ak(modmk)\begin{cases} x \equiv a_1 \pmod{m_1} \\ x \equiv a_2 \pmod{m_2} \\ \vdots \\ x \equiv a_k...
my-crypto-3
1. 欧拉计划(link) 本题需要计算所有满足条件e的总和,需要在e加密的情况下为加密的信息数目是最小的。所以首先我们需要编写计算最大公约数的函数gcd()这里运用欧几里得方法得到,减少时间复杂度。 12345def gcd(a,b): if b ==0: return a else: return gcd(b,a%b) 由题目知道未加密信息满足算式:me≡mmodnm^{e}\equiv m mod nme≡mmodn则未加密的信息数目就是该算式解的个数。又n=p∗qn = p*qn=p∗q可以得到解个数公式该方程解个数为(gcd(e−1,p−1)+1)∗(gcd(e−1,q−1)+1)(gcd(e-1,p-1)+1)*(gcd(e-1,q-1)+1)(gcd(e−1,p−1)+1)∗(gcd(e−1,q−1)+1),由此我们能够遍历所有的e的可能,并且记录下对应未加密信息数目。最后统计出最小的未加密信息数值,累加得到所有满足条件的e。 123456789101112if __name__ ==...
my-crypto-2
1.European ePassport MTC3 AES key — encoded in the machine readable zone of a European ePassport (link) 题目需要破解一个欧洲护照,图片中给出了护照的一部分内容,和一个未知字符。已知初始化矢量即IV为零,填充为01-00。所以首先我们需要找到缺失的字符是什么。根据规则定义了unknown_number()函数。 1234567def unknown_number(): number = "111116" weight = "731" total = 0 for i in range(len(number)): total += int(number[i]) * int(weight[i % 3]) return total % 10 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick Start Create a new post 1$ hexo new "My New Post" More info: Writing Run server 1$ hexo server More info: Server Generate static files 1$ hexo generate More info: Generating Deploy to remote sites 1$ hexo deploy More info: Deployment
my crypto-1
1. Many Time Pad Coursera Dan Boneh Week 1 Program Assignment(link) 题目分析 题目中11个密文均应用了相同的密钥我们知道: c1=k⊕m1,c2=k⊕m2,c1⊕c2=m1⊕m2c_{1}=k \oplus m_{1},c_{2}=k \oplus m_{2},c_{1}\oplus c_{2}=m_{1}\oplus m_{2} c1=k⊕m1,c2=k⊕m2,c1⊕c2=m1⊕m2 根据提示中的考虑空格与 [a-zA-Z] 字符进行亦或运算会改变大小写(a变成A,B变成b)我们可以设置一个判断函数magic():如果运算结果是0则是相同字符亦或运算,若是合法字符则是一个合法字符和空格运算,其余结果用输出’_'来标记。 123456def magic(c): if c == 0: # same ('A' xor 'A' = '\x00') return '*' if chr(c) in...
Fermat素性检测算法
实 验 报 告(一) Fermat素性检测算法 一、实验目的(包括实验环境、实现目标等等) 1.实验环境:python 3.11.3 2.实验目标:理解 Fermat 素性检测算法的基本原理和费马小定理,并且编写相应程序实现对大数实现素数检验。 二、方案设计 (包括背景、原理、必要的公式、图表、算法步骤等等) 背景:素性检测是判断一个数是否为素数的过程。素数在密码学、数论等领域有着重要的应用。本次实验旨在运用Fermat 素性检测来检验4个大数是否为素数。 原理:费马小定理指出若 p 为素数,并且 a 是一个小于 p 的整数,满足 ap−1≡1(modp)a^{p-1} \equiv 1 (mod p)ap−1≡1(modp)...