RSA加解密实战(CTF)

这个实战题目来源于我参加的某海外CTF比赛原题,由于这个题目相较于一般的 RSA 加密方式有些许差别,个人感觉比较有趣且不难懂,于是拿来分享。

对于 RSA 加密的基本认识

一、什么是 RSA 加密算法

        RSA 加密是一种非对称加密方式,使用2种密钥分别对数据进行加解密:

                a、公钥:用于数据的加密,可以公开共享

                b、私钥:用于数据的解密,需要妥善保管,不能泄露

        公钥只能用于加密数据,私钥只能用于解密数据,二者不可更换使用,即用公钥加密的数据只能使用对应的私钥进行解密,反之亦然。

二、RSA 加密的数学基础

        RSA算法的核心是大数运算模运算,基于数论中的一些性质:

                a、大素数的生成:选择两个大素数 p 和 q

                b、模数 n 的计算: n=p×q

                c、欧拉函数 φ(n): φ(n)=(p−1)×(q−1)

                d、选择加密指数 e: e 与 φ(n) 互质,通常选择 e=65537,可以带来较好的计算效率

                e、计算解密指数 d:d 是 e 关于 φ(n) 的模逆元素,即满足 e⋅d≡1 mod  φ(n)

三、密钥生成步骤

        1、选择两个大素数 p 和 q,计算 n=p×q

        2、计算 φ(n)=(p−1)×(q−1) 

        3、选择一个整数 e,满足 1<e<φ(n)且 gcd(e,φ(n))=1

        4、计算 e 的模逆 d,即 e⋅d≡1mod  φ(n)

        5、公钥为 (n,e),私钥为 (n,d)

四、加密过程

要加密的明文消息 m 转换为整数 m 且 0≤m<n,加密得到的密文 c 计算如下:

五、解密过程

接收到密文

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值