- 博客(20)
- 收藏
- 关注
原创 ElGamal初学
密钥对产生算法系统提供一个大素数p和GF(p)上的本原元素a,将p与a公开。对每一个用户A可选择随机选择一个整数d作为私钥 2≤d≤p公钥y=a^dmod p加密算法A与B保密通信,设明文为m随机选择一个整数k 2≤k≤p计算c1=a^k (mod p)c2=(y^k)*m(mod p)(c1,c2)为密文,是明文的2倍长解密算法B收到密文以后解密方法如下:m=c2*invert(c1^d,p) (mod p)例子设p = 11,g = 7,在GF(11)上有7^0=
2021-03-10 16:58:16
711
1
原创 素性检验的两种方法
学习寻找大素数的过程中有两个必要步骤,第一个是寻找大素数,另一个就是素性测试,也就是说确定随机生成的整数p是不是素数。在RSA中的来说,如果想要生成一个模长度为1024bit的rsa,那么N的素因数p,q对应的位长应该约为512,这个过程中最常用的就是随机生成整数,然后检验是否为素数。对于整个加密过程来说,这两步的速度快是必须的。寻找大素数首先来看个例子:2,3,5,7,11,13,,17,19,23,29,31,37….发现一个很重要的东西,就是在寻找范围扩大的过程中,素数的密度是不断变稀疏.
2020-11-08 19:08:27
3181
原创 RSA中模数N有多个素因数
RSA中模数N有多个素因数时,面对多个因数,大部分人没有办法,其实重点在于求得多个素因数的欧拉,即可以很清楚的发现,与n=p*q的欧拉是一样的,这个不是巧合证明正确性:首先我们证明 M^(k(p-1)(q-1)(r-1)+1) mod p=M mod p [ 1 ]1. 如果 M 、 p 不互质,那么p 能整除 M, 明显 p也能整除 M^(k(p-1)(q-1)(r-1)+1), 那么: M^(k(p-1)(q-1)(r-1)+1) mod p=M mod p=02. 若 p 、 q.
2020-11-08 19:00:34
2808
原创 lcg随机数破解
题目链接根据线性同余生成器lcg可得:lcg=(a*x+c)%m根据题目,当输入数字时,可以得到多个连续随机数,根据伪随机数生成的机制,可以了解到,随机数的生成只要知道随机数种子就可以破解类推到线性同余方程组,也就是说当知道a,c,m时即可知道随机数的整个序列例如:假设我们知道lcg0,那么lcg1=(alcg0+c)%m,同理lcg2=(alcg1+c)%m此时我们随意提交多次,可以从中得到连续的随机数,类比于lcg0,lcg1,lcg2的关系lcg0=32081 lcg1=2381
2020-11-08 18:46:09
4992
原创 RSA Factor Attack 及常用脚本
基本解密以下全文中代表乘方,例如:23=2的3次方=8c^d %n == (me)d %n ==m^ (ed)%n ==m^(ed %(φ(n)))%n ==m^1 %n下面开始正文Factor Attack1、当p==q n=p*q=p**2 φ(n)=p**2-p2、孪生质数(twin prime)定义:孪生素数就是指相差2的素数对,例如:3和5,5和7,以36N(N+1)为界,孪生素数以波浪形式渐渐增多 n1=p*q,n2=(p+2)*(q+2) φ(n
2020-11-08 18:35:14
1094
1
原创 将CRT(中国剩余定理)与RSA结合
使用中国剩余定理来加快RSA的运算速度,使用Zn中数字的CRT表示法,使用N的素因子预先计算出的三个额外值,来更有效的执行四次幂运算。在RSA中的一些运算正常的RSA解密,使用私钥(n,d)进行密文解密(或生成签名),不过在运算过程中,我们需要先通过公钥指数e求得私钥指数d,并不如e那么方便,所以可以选择一个值尽可能少的“1”位。对于k位的模数N,私钥质数也有类似的长度,大约一半是“1”。计算指数的时间与k^3成正比,所以需要其他的计算。基础解密:m=c^d mod n1、给定.
2020-11-08 18:34:01
3484
1
原创 RsaLsbOrcalePadding
原理公式攻击者得到密文C=Pe(mod n) ,将其乘以2e(mod N), 并作为密文发送出去,若返回f(2P)如果f(2P) 返回的最后一位是0,那么2P<N,即P<N/2如果f(2P) 返回的最后一位是1,那么2P>N,即 P>N/2接着我们来看看2P 和 4P如果返回的是(偶,偶),那么有 P<N/4如果返回的是(偶,奇),那么有N/4<P<N/2如果返回的是(偶,奇),那么有N/2<P<3N/4如果返回的是(奇,奇),那么有3N
2020-11-08 18:31:40
334
1
原创 分组加密的padding
基本规则在分组加密中,明文长度不满足要求时,经常进行padding,即使恰好为块长度的整数倍,依旧需要padding(填充)。各种填充规则pkcs5DES INPUT BLOCK = f o r _ _ _ _ _(IN HEX) 66 6F 72 05 05 05 05 05KEY = 01 23 45 67 89 AB CD EFDES OUTPUT BLOCK = FD 29 85 C9 E8 DF 41 40pkC
2020-11-08 18:28:36
500
1
原创 流量包分析解密
根据文件,使用wireshark进行分析逐个查看内容时在这个地方找到了流量协议的加密方式根据这里得到的信息,我们开始寻找rsa的相关内容在这里我们发现了RSA的公钥指数和模数,所以我们将公钥内容导出,右键->复制->复制为16进制导出后,首先尝试yafu分解,很快就分解出来此时我们知道rsa的e,p,q,n,所以接下来我们利用现有工具生成私钥并导入这里生成私钥我...
2020-04-05 11:44:59
2283
原创 攻防世界Crypto第一页-进阶区
你猜猜打开附件明显为 16 进制,查询得知为 zip 的文件开头打开 Winhex 后,新建文件,将内容导入保存为 1.zip,打开压缩包此时发现压缩包有密码,使用 ziperello 爆破解密解出 flagenc附件:可以看到为 zero 和 one ,明显为二进制,全部转换为 0 和 1,这时候可以利用 word 等专业文字编辑工具将二进制转为字符串明显的 bas...
2020-04-01 11:40:35
2129
原创 密码学入门——各类编码(三)Unicode编码
计算机发展早期,编码只有ASCII编码,但ASCII编码只能够用来表示拉丁字母、数字以及一些特殊符号,而语言不止英语一种,例如中文一个字节是不够表示的,最少需要两个字节,并且需要兼容ASCII编码,不能与之发生冲突。为了解决传统字符编码方案的局限性,所以Unicode编码应运而生。Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。在文字...
2020-04-01 11:03:00
1210
原创 密码学入门——各类编码(二)base家族
我们接着上一节。上一节我们讲述了ASCII编码,接下来的base系列编码与ASCII之间联系非常紧密。好,我们继续讲解。base系列编码:ASCII 是用128(2^8)个字符,对二进制数据进行编码的方式,base64编码是用64(2^6)个字符,对二进制数据进行编码的方式base32就是用32(2^5)个字符,对二进制数据进行编码的方式base16就是用16(2^4)个字符,对二进制...
2020-04-01 11:02:46
2886
原创 密码学入门——各类编码的认识(一)ASCII编码
我的密码学入门是从编码开始,逐步认识到各种密码类型,我会逐步总结。今天先介绍ASCII,base系列等编码ASCII计算机的最早发明者是美国人,所以他们首要面临的问题就是如何让机器能够将他们的文字,也就是拉丁字母与二进制相对应,然而在计算机出现早期,各个公司都创建了属于自己的一套编码规则,这给不同计算机之间的数据交换带来了极大困难。ASCII的标准版本第一次发布于1967年,迄今为止共收...
2020-04-01 11:02:02
2030
原创 MRCTF2020——crypto——Easy_RSA——babyRSA
babyrsa根据主函数可知,首要目的是找到_P和_Q,首先来看_P可以发现题目已给出P[9],所以直接目的可以手动测试周围素数,直到找到全部(这里是一部分)这里我们可以得到Nfactor = pow(p, base, n)这一句说明我们应该将这个简单RSA解出来,此时按照一般RSA的步骤求得d这里已经得到N的所有因数,所以此时N的欧拉函数为所有因数减1相乘,即(p1-...
2020-03-29 23:12:35
2352
原创 密码学发展历史
古典密码:密码学的历史源远流长,人类对密码的使用可以追溯到古巴比伦时代。如图的Phaistos圆盘是一种直径约为160mm的粘土圆盘,它始于公元前17世纪,表面有明显字间空格的字母这便是古典密码学的萌芽状态,至于圆盘上的奇怪符号究竟有怎样的含义,我们已经无从得知。而在古典密码学中,最为知名的莫过于凯撒密码。在两千多年前,罗马国王Julius Caesar(凯撒)就开始使用”凯撒密码”,这一...
2019-09-28 20:16:56
6035
原创 攻防世界Misc进阶 get-the -key.txt
拿到forensic 100文件后,首先在winhex中打开,发现有大量的key.txt文件,然后在Linux中用file打开文件,发现是linux系统文件接下来创建 /tmp/forensic文件夹,将forensic100解压在该文件夹下,发现为同类压缩包244个压缩包根本看不过来,所以根据题目提示 get-the-key.txt,我使用grep -r key.txt进行文件匹配...
2019-09-15 14:20:18
1353
转载 攻防世界-Crypto-Easy-one(main函数传参、加密代码审计)-Hack-you-2014
下载文件解压得:加密代码:#include <stdlib.h>#include <stdio.h>#include <string.h> int main(int argc, char **argv) { if (argc != 3) { printf("USAGE: %s INPUT OUTPUT\n", argv[0]); retur...
2019-09-14 17:09:34
326
转载 攻防世界misc新手basestego
题目:大意就是给了你一段字符串, 让你找 flag.这里放上字符串, 便于读者实验U3RlZ2Fub2dyYXBoeSBpcyB0aGUgYXJ0IGFuZCBzY2llbmNlIG9mIHdyaXRpbmcgaGlkZGVuIG1lc3NhZ2VzIGluIHN1Y2ggYSB3YXkgdGhhdCBubyBvbmV=LCBhcGFydCBmcm9tIHRoZSBzZW5kZXIgYW...
2019-08-20 13:27:55
328
原创 攻防世界 crypto--------easychallenge
我们得到的是一个.pyc文件,我们先来了解一下 一:什么是pyc文件?pyc文件就是 py程序编译后得到的文件,是一种二进制文件。一般是这样的:python中.pyc文件是什么?pyc文件经过python解释器最终会生成机器码运行。所以pyc文件是可以跨平台部署的,类似Java的.class文件。如果py文件改变,也会重新生成pyc文件。二:pyc文件怎么生成的?1,被当做模块调用...
2019-07-28 17:35:58
2987
转载 用实例给新手讲解RSA加密算法
RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它。但是有不少新来的同事对它不太了解,恰好看到一本书中作者用实例对它进行了简化而生动的描述,使得高深的数学理论能够被容易地理解。我们经过整理和改写特别推荐给大家阅读,希望能够对时间紧张但是又想了解它的同事有所帮助。 RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。RSA以它的三个发明者Ron Rives...
2019-07-28 14:02:11
207
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人