BUUCTF题目——WustCTF2020情书

一、引言

        这道题目要求我们解密一封使用RSA加密系统加密的情书。在本文中,我将详细介绍RSA加密技术的原理,并分享我如何一步步解密这封情书的过程。

二、RSA加密技术简介

        RSA加密技术是一种广泛使用的公钥加密算法,它基于大数分解问题的困难性。RSA算法涉及到三个参数:公钥(N, e)、私钥(N, d)和明文M。其中,N是两个大质数p和q的乘积,e和d是一对互质的数,满足e * d mod φ(N) = 1(φ(N)是N的欧拉函数)。公钥用于加密,私钥用于解密。

题目

三、解密过程

        1.获取公钥和密文

        首先,我们从题目中获得了公钥(N=2537, e=13)和密文(一系列数字,代表加密后的字母)。

        2.分解N得到p和q

        由于N是两个大质数p和q的乘积,我们需要对N进行因式分解来得到p和q。在这个例子中,我们找到了p=43和q=59。

        3.计算φ(N)和d

        φ(N)是N的欧拉函数,它等于(p-1) * (q-1)。然后,我们使用扩展欧几里得算法来找到e和φ(N)的模反元素d,满足e * d mod φ(N) = 1。在这个例子中,我们找到了d=937。

        4.解密密文

        现在,我们有了公钥(N, e)、私钥(N, d)和密文。我们可以使用私钥来解密密文。解密的过程是将密文C的每个数字C_i转换为对应的字符c_i,其中c_i = (C_i)^d mod N。然后,我们将得到的字符按照题目中的映射关系转换为对应的字母。

import gmpy2
from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA
from Crypto.Util.number import long_to_bytes 
n = 2537
e = 13
d = 937
c = '0156 0821 1616 0041 0140 2130 1616 0793'.split(' ')

p = 43
q = 59
phi = (q-1) * (p-1)
m=[]
for x in c:
    m.append(chr(int(gmpy2.powmod(int(x),d,n))+ord('a')))
print(''.join(m))

(转自大佬‘无名函数’的解题代码)

原文链接:https://blog.csdn.net/m0_57291352/article/details/118660320

运行结果为:iloveyou

四、总结

        通过这道题目,我们深入了解了RSA加密技术的原理和解密过程。RSA加密技术是一种非常重要的公钥加密算法,它在网络安全领域有着广泛的应用。同时,这道题目也提醒我们,在实际应用中,我们需要注意保护好自己的私钥,防止被他人窃取和滥用。

        在解题过程中,我们还需要注意一些细节问题,如因式分解的算法选择、模反元素的计算等。这些都需要我们具备扎实的数学基础和编程能力。通过不断学习和实践,我们可以更好地掌握RSA加密技术,并在实际应用中发挥它的作用

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值