CTF竞赛进阶 (一) 密码学

本文介绍了CTF竞赛中的密码学知识,涵盖编码、古典密码、分组密码、流密码和公钥密码等多个方面。从ASCII编码到Base64,再到凯撒密码和RSA,详细阐述了各种加密技术的基本原理和应用场景,对于提升CTF竞赛技能和理解密码学有极大帮助。

0x01 概述

Crypto 相比于 web 和 pwn,更考验参赛者的基础知识,对数学能力、逻辑思维能力与分析能力都有很高的要求。
密码学题目多种多样,包括但不限于:

  1. 通过密文分析明文
  2. 缺陷自定义密码体制分析解密文
  3. 加/解密机交互接口,利用弱点来泄露某些敏感信息

0x02 编码

0x02a 概念

字符编码(英语:Character encoding)、字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式存储。

在计算机技术发展的早期,如ASCII(1963年)和EBCDIC(1964年)这样的字符集逐渐成为标准。但这些字符集的局限很快就变得明显,于是人们开发了许多方法来扩展它们。对于支持包括东亚CJK字符家族在内的写作系统的要求能支持更大量的字符,并且需要一种系统而不是临时的方法实现这些字符的编码。

0x02b Base encode

  1. Base64
    Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。每 6bit 为一个单元,对应一个可打印字符.
    base64 通常用于只能处理文本数据的场合,表示、传输、存储一些二进制数据,包括 MIME 电子邮件、XML 复杂数据等。
    tips:
    原数据长度不是 3 的倍数且剩下 1 个输入数据,则在编码结果后面加 2 个“=”;
    剩下 2 个输入数据,则在编码结果后面加 1 个“=”;
    是 3 的倍数则一个“=”也不加。

  2. base32 and base16
    与 base64 目的一样,只是具体编码规则不同。
    base32 编码将二进制文件转换成 32 个 ASCII 字符组成的文本
    转换表:
    ABCDEFGHIJKLMNOPQRSTUVWXYZ234567

base16 …
转换表:
0-9
A-F

  1. uuencode
    uuencode这个名字是衍生自"Unix-to-Unix encoding",原先是 Unix 系统下将二进制的资料借由 uucp 邮件系统传输的一个编码程式,是一种二进制到文字的编码。uudecode 是与uuencode 搭配的解码程式,uuencode/decode 常见于电子邮件中的档案传送以及 usenet 新闻组和 BBS 的贴文等等。近来已被 MIME 所大量取代。
  2. xxencode
    类似 BASE64 ,转换表不同
    XXencode 编码,XX编码介绍、XXencode编码转换原理与算法

0x02c 其他编码

  1. URL encode
    百分号编码(英语:Percent-encoding),又称:URL编码(URL encoding)是特定上下文的统一资源定位符 (URL)的编码机制,实际上也适用于统一资源标志符(URI)的编码。也用于为 application/x-www-form-urlencoded MIME准备数据,因为它用于通过HTTP的请求操作(request)提交HTML表单数据。
  2. jjencode and aaencode
    jjencode 和 aaencode 都是针对 JavaScript 代码的编码方式。前者是将 JS 代码转换成只有符号的字符串,后者是
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值