1[鹤城杯 2021]easy_crypto
打开是一串社会主义核心价值观,用在线解码工具。
2 [强网拟态 2021]拟态签到题
base64解码
3[SWPUCTF 2021 新生赛]crypto8
给了一串这个东西,是uuencode编码,在线解码
UUencode编码是一种古老的编码方式,通常用于将二进制数据转换成可打印字符的形式。UUencode编码采用一种基于64个字符的编码表,将每3个字节的数据编码为4个可打印字符,以实现数据的转换和传输。
下面是一个简单的示例,展示如何对字符串"Hello, World!"进行UUencode编码:
1.首先,将字符串转换为ASCII码表示的二进制数据:
H: 01001000
e: 01100101
l: 01101100
o: 01101111
,: 00101100
空格: 00100000
W: 01010111
o: 01101111
r: 01110010
l: 01101100
d: 01100100
!: 00100001
2.将这些二进制数据按照每3个字节(24位)一组进行分组:
01001000 01100101 01101100
01101111 00101100 00100000
01010111 01101111 01110010
01101100 01100100 00100001
3.对每组数据进行编码:
第一组:010010 000110 010101 101100 -> 转换为十进制后为:18 6 21 44
第二组:011011 110011 110010 000000 -> 转换为十进制后为:27 51 50 0
第三组:010101 110111 110111 001000 -> 转换为十进制后为:21 55 55 8
第四组:011011 000110 010100 000100 -> 转换为十进制后为:27 6 20 4
4.使用UUencode编码表将十进制数据转换为可打印字符:
18 -> S, 6 -> F, 21 -> V, 44 -> , (逗号)
27 -> c, 51 -> 3, 50 -> 2, 0 -> 空格
21 -> V, 55 -> o, 55 -> o, 8 -> I
27 -> c, 6 -> F, 20 -> T, 4 -> D
因此,经过UUencode编码后,字符串"Hello, World!“会转换为"S3V,c3Vo IFcFTD”。这样编码后的数据可以在网络上传输或存储,需要时可以通过解码还原为原始二进制数据。
4[SWPUCTF 2021 新生赛]crypto7
使用MD5在线解密工具解密
MD5破解
目前可以说 md5 已经基本被攻破了,一般的 MD5 的碰撞都可以在如下网上获取到:
5[SWPUCTF 2021 新生赛]crypto6
从给我们的信息可以看到对var进行了base64编码,再进行base32编码,再进行base16编码,然后输出flag。但我们已经知道flag,求var
只用先base16解码,base32解码,最后base64解码
最后的flag就是:NSSCTF{5e110989-dc43-1bd3-00b4-9009206158fe}
6[SWPUCTF 2021 新生赛]ez_caesar
import base64
def caesar(plaintext):
str_list = list(plaintext)
i = 0
while i < len(plaintext):
if not str_list[i].isalpha():
str_list[i] = str_list[i]
else:
a = "A" if str_list[i].isupper() else "a"
str_list[i] = chr((ord(str_list[i]) - ord(a) + 5) % 26 + ord(a) or 5)
i = i + 1
return ''.join(str_list)
flag = "*************************"
str = caesar(flag)
print(str)
#str="U1hYSFlLe2R0em1mYWpwc3RiaGZqeGZ3fQ=="
首先引入了base64库,最后的str="U1hYSFlLe2R0em1mYWpwc3RiaGZqeGZ3fQ=="明显是一串base64编码,对它进行解码
然后str = caesar(flag),Caesar是凯撒密码,flag通过凯撒编码得到str,那么str通过凯撒解码就可以得到flag。再通过str_list[i] = chr((ord(str_list[i]) - ord(a) + 5) % 26 + ord(a) or 5),得知偏移量是5
7[SWPUCTF 2021 新生赛]crypto10
他建议直接秒了,看格式是凯撒密码,用在线工具解密,偏移量最终测试为13.
8[SWPUCTF 2021 新生赛]pigpig
经过观察,该题是猪圈密码,
替换表:
经过替换得到:whenthepigwanttoeat,加上nssctf即可
这是猪圈密码的设计图,相当于替换密码。
9[SWPUCTF 2021 新生赛]ez_rsa
rsa加密算法
python脚本
import gmpy2
import hashlib
p = 1325465431
q = 152317153
e = 65537
n = p*q
phi = (p-1)*(q-1)
d = gmpy2.invert(e, phi)
print(d)
# md5加密
md5_hash = hashlib.md5(b'43476042047970113').hexdigest()
print(md5_hash)
引用了gmpy2和hashlib两个库
gmpy2 是一个 Python 库,用于进行高精度整数、有理数和浮点数的计算。它是对 GNU Multiple Precision Arithmetic Library(GMP)的 Python 封装,使得在 Python 中可以方便地进行大整数、有理数和浮点数的运算。gmpy2 支持大整数的基本算术运算、比较、位操作等,同时也支持有理数的计算,包括有理数的加减乘除、比较和约分等操作。此外,gmpy2 还支持浮点数的高精度计算,包括浮点数的加减乘除、取整、取模、取幂等操作。gmpy2 库还提供了一些高级功能,例如素数检测、质因数分解、离散对数计算、椭圆曲线加密等。
n=p*q求出n
输出d=43476042047970113
输出MD5=08bb8fb628da85923e5734a75ac19ffe