连分数逼近定理(Legendre 定理)
$连分数定理:若 ∣x−p/q∣<1/(2q2),则p/q 必为x 的某阶渐近分数。\因此k/d 一定会出现在 e/N 的连分数展开序列中任何有理数都可以写成这种嵌套形式:pq=a0+1a1+1a2+1a3+⋯\frac{p}{q} = a_0 + \cfrac{1}{a_1 + \cfrac{1}{a_2 + \cfrac{1}{a_3 + \cdots}}}qp=a0+a1+a2+a3+⋯111$所以可以用分数来逼近一个数。之前写过维纳攻击题目 123n = 50741917008834493299070225691169478840849396874952761442161456861294414476488971722944402081365889336298371445415998071902636636131878941527941717285853638193887037926767018012817479834474437172560982787233951230...
离散对数笔记
离散对数在整数中,离散对数(DL)是一种基于同余运算和原根的一种对数运算 在任何群G中可为所有整数k定义一个幂数为b^k,而离散对数log_b^{a}使得b^k=a的整数k。 离散对数在一些特殊情况下可以快速计算,公钥密码学中几个重要算法的基础,是假设寻找离散对数的问题解,在仔细选择过的群中,并不存在有效率的求解算法。 基本定义 生成元 在一个群G中,如果g是G的生成元,即所有G中所有元素都可以被表示成y=g^x,此时x称为y在G中的对数 阶 设 𝑚≥1,gcd(𝑎,𝑚)=1,使得 𝑎^𝑑≡1(mod𝑚) 成立的最小正整数 𝑑 称为 𝑎 对模 𝑚 的指数或者阶。一为𝛿_𝑚(𝑎)。满足 𝑎^𝑑≡1(mod𝑚) 的 𝑑 一定满足 𝑑∣𝜑(𝑚)。 原根 当𝛿_𝑚(𝑎)=𝜑(𝑚)时,称a是模m的原根,简称m的原根 常规sage函数 求解base为底,a为对数;ord为base的阶,可省,operation可以是+/*,默认为*,bounds是一个区间(ld,ud),需要保证所计算的对数在此区...
BUUCTF打怪ing
1.一眼就解密由大小写字母和数字组成尾部是等号 猜测为base64编码 在线解密 2.MD5 题目:e00cf25ad42683b3df678c61f42c6bda MD5消息摘要算法,是Hash算法的一类,MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要(32位的数字字母混合码).密文由数字和字母组成,大多位32位,同时具有不可逆的特点,即知道密文无法得到原文 为什么不可逆 非线性变换,刻意设计的”单向陷阱” 在线解密 https://www.somd5.com/ 离线-MD5CrackSp 3.Url编码有很多的百分号就是url编码,直接url解码 4.看我回旋踢1234567891011test1="synt"test2="flag"for i in test1: print(ord(i))for i in test2: print(ord(i)) for x,y in zip(test1,test2): print(ord(x)-ord(y))#计算移位 flag{5cd1004d-86...
二十天速通数字签名密史
DAY 1:第一章:现代密码学开篇前面几节讲的都是密码学发展史,《New Directions in Cryptography》这篇划时代的学术论文带我走进了密码学,密码学真神奇。记录一个知识点数据的三易性:1、易删除 2、易修改 3、易复制在万事具备时1.3节末尾引用了《康熙王朝》里面的“来了来了,风信来了!准备登船收复台湾!”很有意思。进入正题密码学新方向来了,一个数学小故事指数运算带给我们”DH密钥协商”(a,g^b)=(b,g^a)=g^{a*b}密码学灵魂之问这个技术背后的原理是什么?keypoint:单项函数和单项陷门函数的结合,可以用来进行密钥协商。午憩一下。。。。。。话接上回公钥密码学(Public Key Cryptography)在已知的:加密系统=算法+密钥 进化到了:加密系统=算法+公钥+私钥。简直神来之笔。现在引入一个新概念其实不新,但我不会数字签名,任何人都可以验证签名,但是只有私钥拥有者可以签名。令人眼花缭乱的密码术语,写一些没听过的吧,“零知识证明,安全多方计算,承诺,秘密共享”现代密码学核心是计算,计算的核...
RSA学习笔记
非对称加密RSARSA加密 RSA的加密过程表达式 密文= 明文^Emod N公钥=(E,N) E是加密(Encryption)的首字母,N是数字(Number)的首字母 RSA解密 明文=密文^DmodN 私钥(D,N) D是解密(Decryption)的首字母;N是数字(Number)的首字母 生成密钥对(E,D,N) 步骤 准备两个质数p,q。这两个数不能太小,太小则会容易破解,将p乘以q就是N N=p*q 求L(L为中间过程的中间数) L 是 p-1 和 q-1的最小公倍数 就是phi_N 求E E必须满足两个条件:E是一个比1大比L小的数,E和L的最大公约数为1用gcd(X,Y)来表示X,Y的最大公因数则E条件如下: 1 < E < Lgcd(E,L)=1 求D 12#求逆元D=inverse(E,phi_n) 1 < D < LE*D mod L = 1$$E*D\equiv1\pmod{L}$$ RSA算法原理私钥解密的证明$$c^d\equiv m(modn)$$ $$...
hash
题目 1234小明养成了定期修改密码的好习惯,同时,他还是一个CTF爱好者。有一天,他突发奇想,用flag格式来设置密码,为了防止忘记密码,他还把密码进行了md5加密。为了避免被其他人看到全部密码,他还特意修改了其中部分字符为#。你能猜出他的密码吗?plaintext = flag{#00#_P4ssw0rd_N3v3r_F0rg3t_63####}md5 = ac7f4d52c3924925aa9c8a7a1f522451PS: 第一个#是大写字母,第二个#是小写字母,其他是数字。 思路MD5 是一种哈希函数,特点是: 任意输入 → 固定 128 bit(32位十六进制)输出不可逆:无法从哈希值反推原文确定性:相同输入永远得到相同输出利用确定性来验证结果得到flag EXP 12345678910111213141516171819202122232425262728import hashlibimport itertoolsimport stringkey='ac7f4d52c3924925aa9c8a7a1f522451'c=...
RSA猛攻
e,phi不互素题目 1234567891011121314151617181920212223from Crypto.Util.number import *#from shin import flagm=bytes_to_long(b'HDCTF{******}')e=65537p=getPrime(256)q=getPrime(512)r=getPrime(512)n=p*q*rP=pow(p,2,n)Q=pow(q,2,n)c=pow(m,e,n)print(f"P = {P}")print(f"Q = {Q}")print(f"n = {n}")print(f"c = {c}")'''P = 87602103743628486546804702193099622506978083349430360494505231392992894513115...
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 StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment






