欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

GKCTF2020——CRYPTO

程序员文章站 2022-05-27 14:48:52
...

小学生的密码学

这道题就是简单的仿射密码
解密网站
GKCTF2020——CRYPTO
base64一下即是flag

babycrypto

这道题拿到题目可知是RSA,大数n使用工具暂时无法进行分解,而p给出了高位,低位还未知。
在网上找到了类似的题目,原文链接
GKCTF2020——CRYPTO
这里使用到一个开源的数学软件sagemath
GKCTF2020——CRYPTO
得到了p,于是接下来常规的RSA求解

import gmpy2
import math
from Crypto.Util.number import bytes_to_long, long_to_bytes

c = gmpy2.mpz(1422566584480199878714663051468143513667934216213366733442059106529451931078271460363335887054199577950679102659270179475911101747625120544429262334214483688332111552004535828182425152965223599160129610990036911146029170033592055768983427904835395850414634659565092191460875900237711597421272312032796440948509724492027247376113218678183443222364531669985128032971256792532015051829041230203814090194611041172775368357197854451201260927117792277559690205342515437625417792867692280849139537687763919269337822899746924269847694138899165820004160319118749298031065800530869562704671435709578921901495688124042302500361)
n = gmpy2.mpz(22356763374676421464625378500213339933332772809897207920729779273423674391734609826525432054721219700275907299132471518921609327317193522567659631757746842030241874692914098354564311806192080734895649520789778880115460999713973202684541940857690744940359412410680906226760273075221532248260114209496048785258860756023841150910290983974843412361701517438220974722832625030127395031631696995777436058406987465592189873785392136925593708921923255186282515777996509326779993612528103615281644689464568237409082282767318227236298791238683706176542426759149262625349498709445342710799386836175120162674849965878446213480453)
p = gmpy2.mpz(160734387026849747944319274262095716650717626398118440194223452208652532694713113062084219512359968722796763029072117463281356654614167941930993838521563406258263299846297499190884495560744873319814150988520868951045961906000066805136724505347218275230562125457122462589771119429631727404626489634314291445667)
q = n/p
e = 65537
d = gmpy2.invert(e, (p-1)*(q-1))
m = pow(c,d,n)
flag = long_to_bytes(m)

print flag

汉字的秘密

打开word一看就是之前实验吧中做过的当铺密码,根据规律得到
69 74 62 67 118 83 72 77 86 55 71 57 82 57 64 63 51 107
EJ>aaa@qq.com?3k
显然这并不是flag,接下来是变异凯撒,编写脚本

#include <stdio.h>
int main ()
{
	int n[18]={69,74,62,67,118,83,72,77,86,55,71,57,82,57,64,63,51,107};
	int i,j=1;
	for(i=0;i<18;i++){
		printf("%c",n[i]+j);
		j++;
	}
}
相关标签: 密码学