随笔分类 - Crypto
摘要:这里主要记录一些编码和古典密码的内容,没什么好讲的,就直接记录例题了。 编码:都是写一步看一步;不需要啥脑洞,需要大概能看出它是哪种编码。 图结合着看; .decode()让结果不是字节码的形式(不含【b''】);1-2之间去掉最后一位是因为那里有个L。 然后找个网站翻译一下摩尔斯码就行了。 总的来
阅读全文
摘要:过于简单,题目懒得放了。 不过,借此机会我终于搞明白怎么把使用Z3的输出了(过菜,勿喷) 先看一看这个: 我们可以看出,Z3声明的变量是ArithRef类型; 它好像没有什么好用的类型转化方法,python也很难将其作为变量继续调用。 solve的结果是直接输出的,其没有返回值,使用solve获得的
阅读全文
摘要:在RSA攻击中,存在着“小明文攻击“的方式; 在明文够小时,密文也够小,直接开e次方即可; 在明文有点小时,如果e也较小,可用pow(m,e)=n*k+c穷举k尝试爆破 所以,比如说,在选择明文攻击中,单纯的RSA非常容易被破解。 于是,我们就像将密文进行一下填充,最好让密文都等长。 但是填充方式也
阅读全文
摘要:emmmm感觉其实自己对这个的理解完全不够,原理只能写出这么个东西(悲) 代码完全是 攻击方式中(1)(2)内容的实现。 lambda是一种可以理解为匿名函数的写法;写在这里看起来很酷炫(bushi) 程序中的N对应的就是原理讲解中的m,用朴实的东西完全可以写出来。 iroot(x,y)对x开y次方
阅读全文
摘要:RSA基本实现 首先获得N比特的伪随机数;使用Random库中内容。 randint(n,m) 表示生成一个在n和m之间的随机数, **表示乘幂。 getPrime找素数,or 1运算是一种优化;如果当前数不是素数,则+2再验证;方法有点糙,但勉强能用。 exgcd此处用来计算逆元。它读取两个三元组
阅读全文
摘要:注:(不求甚解的)攻击原理 以及(浅层的)算法解释已在图片中给出;文字部分主要讲一些python语法的东西。 代码需要库 gmpy2和libnum;加密算法还需要Crypto.Util.number . gcdext(a,b)扩欧 ;;pow(a,b,c)将a的b次方对c取模 注意使用gmpy2大整
阅读全文