CTF
NSSCTF题解(二)
GDOUCTF 2023由于当时比赛那天参加学校活动比较忙错过了比赛,那就看看题吧。
Absolute_Baby_Encrytpion题目给了一段密文和js代码:
1+}!q")hiim)#}-nvm)i-$#mvn#0mnbm)im#n+}!qnm8)i-$#mvnoc#0nz<$9inm!>-n1:1-nm8)i-$~c58n!}qhij#0[noic##m8nc8n?!8c}w!n]>&
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 ...
CTF
校赛感悟和两道难题
2022年4月9日和山大打了一场校赛,打了两校个人第六,密码分项第一,密码方向放了七个题出了四道,感觉这次密码难度梯度设置的有点离谱,简单的那几道板子题一放出基本就能秒,做了道难的题死磕了一天。不过我觉得最后能出这道比较难的题还是挺有意义的,也感谢学长的一些战术提示才能最终解出这道难题,先来分享一下:
Random-RSA123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263from gmpy2 import next_primefrom gmpy2 import invert as inverse_modfrom random import getrandbitsfrom Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_v1_5from sys import exitfrom sage.all import Zmod,matrix,vec ...
Crypto数学
ECC椭圆曲线加密算法
概述
这里的椭圆曲线跟高中学的椭圆曲线方程啥的完全不是一回事。
ECC是椭圆密码学的简称,ECDH和ECDSA是基于椭圆密码学的具体算法。
椭圆曲线
在椭圆曲线密码学中,射影平面(Projective Plane)是一种用来定义和操作椭圆曲线上的点的数学结构。它是椭圆曲线上的有限点集合加上一个称为无穷远点的特殊点构成的。
一条椭圆曲线为在射影平面上满足Weierstrass方程的所有的点的集合,用Weierstrass公式加以描述的椭圆曲线$E$为:$$E:{(x,y)|y^2+A_1y=x^3+A_2x^2+A_3x+A_4}$$参数$A_1,A_2$决定了椭圆曲线的形状,实际常用的简化的Weierstrass方程(WNF)如下:$$E:{(x,y)|y^2=x^3+ax+b}$$我们在算法运算时需要使用WMF曲线的切线,所以需要使其处处光滑可导,需要判别式不为领,在方程中,有:$$\triangle=4a^3+27b^2≠0$$定义射影平面的无穷远点设为$0$,无穷远点是所有曲线在无穷远的交点,被称为理想点。这样,引入WNF的完整形式:$$E:{( ...
Crypto数学
格密码
寒假自学了一部分格的知识点,但是感觉自己知识匮乏有些内容难以理解,现在有了一定的知识支撑再重新温习一遍。
线性代数知识
线性空间又叫向量空间。
向量向量是空间上的一个点,或者从原点引出指向这个点的箭头,用坐标来表示这个向量。
设两个向量:$$a=(a_0,a_1,…,a_{n-1})$$
$$b=(b_0,b_1,…,b_{n-1})$$
向量加:$$a+b=(a_0+b_0,a_1+b_1,…,a_{n-1}+b_{n-1})$$点乘(将向量看做矩阵,也可以理解为前面横向量乘以后面列向量):$$a\cdot b=\sum^{n-1}_{i=0}a_i\cdot b_i$$
$$a\cdot b=ab^T=\begin{bmatrix}a_0 & … & a_{n-1}\end{bmatrix}\begin{bmatrix}b_0 \ … \ a_{n-1}\end{bmatrix}=\sum^{n-1}_{i=0}a_i\cdot b_i$$
向量还有长度,长度就是这个点到空间 ...
Crypto
周分享1:MT19937算法
MT19937算法这里学习一种新的算法:梅森旋转算法(Mersenne Twister),产生随机数的速度快,周期长,周期可以达到$2^{19937}-1$。
特点:产生32位整数序列,能在$1≤k≤623$的维度之间均等分布。
python的random库的函数getrandbits()就是利用了MT19937算法,函数getrandbits(32)就是生成32位随机数。
下面是MT19937-32的生成代码:
__init__可以意为initialize(初始化),理解为实例化出某个类的对象时调用的初始化方法,例如定义一些变量供后面的其它方法使用。
12345678910111213141516171819202122232425262728293031323334# 返回一个32位二进制代码def _int32(x): return int(0xFFFFFFFF & x) class MT19937: # 根据seed初始化624的state,seed为种子 def __init__(self, seed): self.mt = [ ...
CTF
NSSCTF题解(一)
太简单的题就不往上发了,只发一些我觉得有些意思的题。
WEEK 1[SWPU 2020]happy1234('c=', '0x7a7e031f14f6b6c3292d11a41161d2491ce8bcdc67ef1baa9eL')('e=', '0x872a335')#q + q*p^3 =1285367317452089980789441829580397855321901891350429414413655782431779727560841427444135440068248152908241981758331600586#qp + q *p^2 = 1109691832903289208389283296592510864729403914873734836011311325874120780079555500202475594
一道数学题。
提取两式公因式:
\begin{cases}q(1+p^3)=x_1\\\\pq(1+p)=x_2\end{cases}能看出存在公因子q,gcd求一下公 ...
CTF
五道题
前几天学长发来了五道题,由于夹杂着考试忙着复习没来得及看,只研究出了其中一道题,现在看了看wp感觉这些题还是有很大价值的,来分享一下
Euler题目:
12345678910111213141516171819202122232425262728293031from secret import flagfrom Crypto.Util.number import *import randomp = getPrime(1024)q = getPrime(1024)e = 65537d = inverse(e, (p-1)*(q-1))n1 = p*qprint('d =', d)print('n1 =', n1)n2 = 1while True: tmp = getPrime(20) for i in range(random.randint(1, 10)): n2 *= tmp if int(n2).bit_length() > 4096: breakm = bytes_to_long(flag ...
Crypto
AES题目整理
[ACTF新生赛2020]crypto-aes1234567891011121314151617181920from Crypto.Cipher import AESimport osimport gmpy2from flag import FLAGfrom Crypto.Util.number import *def main(): key=os.urandom(2)*16#32 iv=os.urandom(16)#16 print(bytes_to_long(key)^bytes_to_long(iv)) aes=AES.new(key,AES.MODE_CBC,iv) enc_flag = aes.encrypt(FLAG) print(enc_flag)if __name__=="__main__": main()'''91144196586662942563895769614300232343026691029427747065707381728622849079757b'\ ...
网站开发
CSS学习日记(二)
权重叠加当后代选择器中出现多种选择器时,需要计算权重,计算方式我们可以把优先级拿二进制进行类比:
权重等级
选择器
0,0,0,0
继承性或者 *
0,0,0,1
标签选择器
0,0,1,0
类选择器 伪类选择器
0,1,0,0
ID选择器
1,0,0,0
行内style
无穷大
!important
以下的这种计算方式会出现累加,但是没有进位。
123456789101112131415161718<head> <style> /* 权重0,0,0,1+0,0,0,1=0,0,0,2 */ ul li { color: green; } /* 权重0,0,0,1 */ li { color: red; } </style></head><body> <ul> <l ...
Crypto
流密码简介
前置知识对称密码:通信双方使用相同的密钥。
公钥密码:通信双方使用不同的密钥,又称为“非对称密码”。
对称加密我们设$M$为明文空间,$K$为密钥空间,$C$为密文空间。设$(E,D)$为对称加密方案,$E$为加密算法(Encrypt),$D$为解密算法(Decrypt)。
加密算法需要有两个输入:一个是要加密的明文$m$,另一个为密钥$k$。解密算法也要有两个输入:一个是要解密的密文$c$,另一个为密钥$k$。
c=E(k,m)\iff m=D(k,c)为了保证解密正确性,对于对称加密方案$(E,D)$,需要满足$m=D(k,E(k,m))$
完善保密性如果$\forall m_0,m_1\in M(|m_0|=|m_1|),\forall c\in C$,得到:($Pr[…]$为概率)
\Pr[E(k,m_0)=c]=\Pr[E(k,m_1)=c]那么$(E,D)$有完善保密性,其中$k\in K$随机。
简单来说,给定一个任意密文$c$,每个明文加密成$c$的概率相等,攻击者只窃听到密文无法知道对应的明文。密文不会泄露明文的任何信息。
特点:
1.唯密文攻击(Cipherte ...