GKCTF2020——CRYPTO
程序员文章站
2022-05-27 14:48:52
...
小学生的密码学
这道题就是简单的仿射密码
解密网站
base64一下即是flag
babycrypto
这道题拿到题目可知是RSA,大数n使用工具暂时无法进行分解,而p给出了高位,低位还未知。
在网上找到了类似的题目,原文链接
这里使用到一个开源的数学软件sagemath
得到了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++;
}
}
上一篇: IO总结之File文件总结(一)
下一篇: PHP操作XML
推荐阅读
-
vue中使用cookies和crypto-js实现记住密码和加密的方法
-
Yum中报错:“pycurl.so: undefined symbol: CRYPTO_num_locks”的问题排查
-
前端加密传输 crypto-js AES 加密和解密
-
在Python中使用M2Crypto模块实现AES加密的教程
-
攻防世界_新手区_Crypto——“幂数加密”
-
python的Crypto模块实现AES加密实例代码
-
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
-
python Crypto模块的安装与使用方法
-
前端angular使用crypto-js进行加密
-
[GKCTF2020]CheckIN bypass_php7_disable_functions