BUU Crypto[33-36]

本文探讨了两种加密技术:RSA的小指数攻击和Playfair密码的解密过程。对于RSA,利用e值较小的情况,通过小指数攻击成功解密得到flag。而对于Playfair密码,通过理解其加密原理并找到密钥,解密后得到另一个flag。这些案例展示了密码学在信息安全中的应用和重要性。
摘要由CSDN通过智能技术生成

Dangerous RSA

解题思路

#n: 0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f752406a43fbecb53e80836ff1e185d3ccd7782ea846c2e91a7b0808986666e0bdadbfb7bdd65670a589a4d2478e9adcafe97c6ee23614bcb2ecc23580f4d2e3cc1ecfec25c50da4bc754dde6c8bfd8d1fc16956c74d8e9196046a01dc9f3024e11461c294f29d7421140732fedacac97b8fe50999117d27943c953f18c4ff4f8c258d839764078d4b6ef6e8591e0ff5563b31a39e6374d0d41c8c46921c25e5904a817ef8e39e5c9b71225a83269693e0b7e3218fc5e5a1e8412ba16e588b3d6ac536dce39fcdfce81eec79979ea6872793L
#e: 0x3
#c:0x10652cdfaa6b63f6d7bd1109da08181e500e5643f5b240a9024bfa84d5f2cac9310562978347bb232d63e7289283871efab83d84ff5a7b64a94a79d34cfbd4ef121723ba1f663e514f83f6f01492b4e13e1bb4296d96ea5a353d3bf2edd2f449c03c4a3e995237985a596908adc741f32365
注意到e很小,因此可以使用小指数攻击,原理如图(图源【buu】Dangerous RSA(小指数攻击)

小指数攻击
exp如下:

from gmpy2 import iroot
from Crypto.Util.number import *

e = 0x3
n = 0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f752406a43fbecb53e80836ff1e185d3ccd7782ea846c2e91a7b0808986666e0bdadbfb7bdd65670a589a4d2478e9adcafe97c6ee23614bcb2ecc23580f4d2e3cc1ecfec25c50da4bc754dde6c8bfd8d1fc16956c74d8e9196046a01dc9f3024e11461c294f29d7421140732fedacac97b8fe50999117d27943c953f18c4ff4f8c258d839764078d4b6ef6e8591e0ff5563b31a39e6374d0d41c8c46921c25e5904a817ef8e39e5c9b71225a83269693e0b7e3218fc5e5a1e8412ba16e588b3d6ac536dce39fcdfce81eec79979ea6872793
c = 0x10652cdfaa6b63f6d7bd1109da08181e500e5643f5b240a9024bfa84d5f2cac9310562978347bb232d63e7289283871efab83d84ff5a7b64a94a79d34cfbd4ef121723ba1f663e514f83f6f01492b4e13e1bb4296d96ea5a353d3bf2edd2f449c03c4a3e995237985a596908adc741f32365

k = 0
while 1:
    res = iroot(c + k * n, e)
    if (res[1] == True):
        print(long_to_bytes(res[0]))
        break
    k = k + 1

得到flag:flag{25df8caf006ee5db94d48144c33b2c3b}

总结

[HDCTF2019]basic rsa

解题思路

出题脚本

import gmpy2
from Crypto.Util.number import *
from binascii import a2b_hex,b2a_hex
flag = "*****************"
p = 262248800182277040650192055439906580479
q = 262854994239322828547925595487519915551
e = 65533
n = p*q
c = pow(int(b2a_hex(flag),16),e,n)
print c
# 27565231154623519221597938803435789010285480123476977081867877272451638645710

真·basic,完全就是正常加解密,得到flag:flag{B4by_Rs4}

总结

Cipher

解题思路

还能提示什么呢?公平的玩吧(密钥自己找) Dncnoqqfliqrpgeklwmppu

普莱菲尔密码( Playfair Cipher ):(谐音梗扣分)

  1. 选取一个英文字作密钥。除去重复出现的字母。将密钥的字母逐个逐个加入5×5的矩阵内,剩下的空间将未加入的英文字母依a-z的顺序加入。(将Q去除,或将I和J视作同一字。)

  2. 将要加密的讯息分成两个一组。若组内的字母相同,将X(或Q)插入两字母之间,重新分组(例如 HELLO 将分成 HE LX LO)。若剩下一个字,也加入X字。

  3. 在每组中,找出两个字母在矩阵中的地方。

    • 若两个字母不在同一直行或同一横列,在矩阵中找出另外两个字母,使这四个字母成为一个长方形的四个角。
    • 若两个字母在同一横列,取这两个字母右方的字母(若字母在最右方则取最左方的字母)。
    • 若两个字母在同一直行,取这两个字母下方的字母(若字母在最下方则取最上方的字母)。

新找到的两个字母就是原本的两个字母加密的结果。

解密已经有写好的工具,或者逆推表格也很简单,我们要做的就是把key求出来,这题的key: playfirbcdeghkmnoqstuvwxz
key
放到工具解得:itisnotaproblemhavefun,flag为:flag{itisnotaproblemhavefun}

总结

Playfair密码无法被词频爆破分析
Cipher 还能提示什么呢?公平的玩吧(密钥自己找)

[GXYCTF2019]CheckIn

解题思路

dikqTCpfRjA8fUBIMD5GNDkwMjNARkUwI0BFTg==
一眼base64,解密得v)L_F0}@H0F49023@FE0#@EN
特殊符号很多,尝试ROT47,得到flag:GXY{Y0u_kNow_much_about_Rot},换成flag提交即可

总结

ROT5:只对数字进行编码,将数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6。
ROT13:只对字母进行编码,将字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O。
ROT18:将ROT5和ROT13组合在一起,命名为ROT18。
ROT47:对数字、字母、常用符号进行编码,按ASCII值进行位置替换,将字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126,具体参考ASCII编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值