首页 > 其他分享 >BUUCTF_Crypto_WriteUp | RSA

BUUCTF_Crypto_WriteUp | RSA

时间:2023-11-06 18:46:25浏览次数:40  
标签:BUUCTF WriteUp de RSA long Crypto varphi 解密 mod

题目(原题的拼写错误)

在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flga提交

分析

回顾一下 RSA 算法描述:

RSA 算法的具体描述如下:
(1)任意选取两个不同的大素数 p 和 q 计算乘积 \(n=pq,\varphi(n)=(p-1)(q-1)\);
(2)任意选取一个大整数 e,满足 \(gcd(e,\varphi(n))=1\),整数 e 用做加密钥(注意:e 的选取是很容易的,例如,所有大于 p 和 q 的素数都可用);
(3)确定的解密钥 d,满足 \((de)\mod\varphi(n)=1\),即 \(de=k\varphi(n)+1,k\ge1\) 是一个任意的整数;所以,若知道 e 和 \(\varphi(n)\),则很容易计算出 d;
(4)公开整数 n 和 e,秘密保存 d;
(5)将明文 m(m<n 是一个整数)加密成密文 c,加密算法为

\[c=E(m)=m^{e}\mod n \]

(6)将密文 c 解密为明文 m,解密算法为

\[m=D(c)=c^{d}\mod n \]

然而只根据 n 和 e(注意:不是 p 和 q)要计算出 d 是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道 d)才可对密文解密。

根据描述编写解密代码:

long long p = 473398607161;
long long q = 4511491;
int e = 17;
long long d = -1;
long long varphi = (p - 1) * (q - 1);

// de = kφ(n) + 1
int k = 1;
while (1) {
	if ((k * varphi + 1) % e == 0) {
		printf("%lld", (k * varphi + 1) / e);
		break;
	}
}

return 0;

得到 flag 内容,套壳提交。

Flag

flag{125631357777427553}

参考

RSA算法

标签:BUUCTF,WriteUp,de,RSA,long,Crypto,varphi,解密,mod
From: https://www.cnblogs.com/Guanz/p/17813414.html

相关文章

  • BUUCTF_Crypto_WriteUp | Rabbit
    题目U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI分析字符串中除了大小写字母和零星数字外有俩很可疑的符号“/”和“+”,猜测是Base系列编码。用Base64解码得到一串可疑的字符Salted__þÉÙÃ>Œn8É^q›cØ。不对劲。打开浏览器......
  • BUUCTF_Crypto_WriteUp | Quoted-printable
    题目=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6分析拿到题目的第一反应:好多等号!于是去大佬的编码密码总结帖子里找类似的格式,找到如下:Quoted-printable编码简述:它是多用途互联网邮件扩展(MIME)一种实现方式。有时候我们可以邮件头里面能够看到这样的编码;特......
  • BUUCTF_Crypto_WriteUp | 变异凯撒
    题目加密密文:afZ_r9VYfScOeO_UL^RWUc格式:flag{}分析先复习一下凯撒密码。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。凯撒密码是单表代......
  • BUUCTF_Crypto_WriteUp | password
    题目姓名:张三生日:19900315key格式为key{xxxxxxxxxx}分析标题是password,题目给的是key,猜测key里的内容应该就是张三的密码。题目给key的内容很认真地放了10个x,猜测flag内容是十位字符。而张三的姓名是2个字,给出的生日是8位,咱把姓名缩写和生日一组合,将得到的老......
  • BUUCTF_Crypto_WriteUp | 摩丝
    题目下载附件解压得到:...-..---...-.-.-----..-分析根据标题和题目,显然是摩斯密码解密。摩尔斯电码(MorseCode)是由美国人萨缪尔·摩尔斯在1836年发明的一种时通时断的且通过不同的排列顺序来表达不同英文字母、数字和标点符号的信号代码,摩尔斯电码主要由以下5种它......
  • BUUCTF_Crypto_WriteUp | 看我回旋踢
    题目下载附件解压得到字符串:synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}分析字符串里除去标志大括号,剩下的包括小写字母、数字和“-”符号。字符串的形式和传统flag的形式很像但细看根本不是一个样,合理猜测“{”前的四个字母对应“flag”,打开ASCII码表对照发现“synt”......
  • BUUCTF_Crypto_WriteUp | url 编码
    题目下载附件解压缩得到txt文件,打开是一串字符:%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d分析每3位字符均以“%”开头,是URL编码的特征,结合标题猜测为URL编码。用HackBar解码得到Flag。Flagflag{and1=1}参考CTF常见编码及加解密(超全)......
  • BUUCTF_Crypto_WriteUp | MD5
    题目下载附件解压缩得到txt文件,打开是一串字符:e00cf25ad42683b3df678c61f42c6bda分析题目是MD5那就用MD5解密试试。在线解密即得Flag,包上“flag{}”提交。Flagflag{admin1}参考MD5在线解密......
  • BUUCTF_Crypto_WriteUp | 一眼就解密
    题目下面的字符串解密后便能获得flag:ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30=注意:得到的flag请包上flag{}提交分析字符串有40位,包含大写字母、小写字母、数字和末尾的“=”,猜测为Base64编码。base32的编码表是由(A-Z、2-7)32个可见字符构成,“=”符号用作后缀填充......
  • 0xGame 2023【WEEK4】Crypto WP
    DangerLeak查看代码fromrandomimport*fromsecretimportflagfromCrypto.Util.numberimport*m=bytes_to_long(flag)p=getPrime(1024)q=getPrime(1024)n=p*qphi=(p-1)*(q-1)whileTrue:M=getrandbits(954)d0=getrandbits(70)......