第五周学习笔记

第五周学习笔记

1.安装pycharm,python调库实现base64加解密。
2.完成ctfshow中crypto模块前5题。

python实现Base64加解密

加密

使用python实现base64加密需要使用base64库

首先输入需要加密的内容

然后对输入内容进行编码,通过encode函数实现

使用base64.b64encode()函数进行加密。

import base64
a = input("Enter")
c = a.encode("utf-8")#编码
b = base64.b64encode(c)#加密
print(b)

示例:image-20231122232209305

若要去除b' ' 框,只需将print(b)改为print(str(b, 'utf-8'))

image-2023112223243

使用浏览器在线解码工具测试

image-20231122232816805

结果正确,加密成功。

解密

加密的逆过程

先对密文使用base64.b64decode()函数进行解密,得到原文的16进制编码

对编码进行utf-8解码,就得到了原文。

import base64
a = input("输入密文:")
b = base64.b64decode(a)
c = b.decode("utf-8")
print(c)

示例:image-20231122234221773

image-20231122234412547

解码成功。


ctfshow中crypto

第一题

image-20231123224729273

由题可知,需要将密文进行反向排序。

直接将密文反向输入即可解出答案。image-20231123224957915

第二题

image-20231123225049886

打开密文后看到密文仅由[]()!+组成。

查询资料后可知该加密方式符合jsfuck加密特征。

使用在线解码工具进行解码

image-20231123230245561

即可得到答案。

第三题

再网页打开文件后得到一堆中文乱码,下载.txr文件后再次打开image-20231123231207827

可以看到由颜文字构成的密文。

查资料可知为AAencode加密法,使用在线解密网站进行解密。image-20231123231453438

即可得到答案。

第四题

请添加图片描述

该题涉及到rsa加密算法。p,q为两个大质数,e为公钥,d为私钥。

没有找到在线根据p、q、e直接生成d的网站,在了解rsa原理后使用py来求d。

import gmpy2
p = 447685307
q = 2037
e = 17

N = p*q
N2 = (p-1)*(q-1)
d = gmpy2.invert(e, N2)
print(d)

N用于对明文加密,N2为N的欧拉函数。

程序中使用了gmpy2库中的invert函数来求逆元,结果即为私钥d。

image-20231124182019631

得到d

image-20231124181901083

输入答案后结果正确。

第五题

image-20231124212226303

本题中

c为密文,我们需要先根据p、q、e求出私钥d,然后对密文进行解密。

私钥与上题一致,为 53616899001

明文是密文的D次方后除以N后的余数。

使用gmpy2库中的powmod函数对密文进行求解

import gmpy2

p = 447685307
q = 2037
e = 17
c = 704796792

N = p * q
N2 = (p - 1) * (q - 1)
d = gmpy2.invert(e, N2)
m = gmpy2.powmod(c, d, N)

print(m)

image-20231124222644395

image-20231124222359485

答案正确。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值