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...