base64人类群星闪耀时

CSP2021考了……

什么鬼……

不得不大骂一声——您有毒吧

base64是什么

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

聪明的你肯定发现了,以上来自:base64_百度百科 (baidu.com)

base64的意义

有些情况下传输不可见字符不方便。比如一个纯文本协议,二进制中可能会出现被当做控制字符处理的部分。这样引起传输失败。

又由于每个地方的路由存在差异,无法统一,则需要base64这么一个编码方式。

因为base64都是可见字符(A~Z,a~z,0~9,+,/),所以不会出现以上问题。

请注意,base64并不是加密算法,不适用于加密通信。

base64的表格

首先,base64有以下字符对应表:

十进制下标 字符
0 A
1 B
2 C
3 D
4 E
5 F
6 G
7 H
8 I
9 J
10 K
11 L
12 M
13 N
14 O
15 P
16 Q
17 R
18 S
19 T
20 U
21 V
22 W
23 X
24 Y
25 Z
26 a
27 b
28 c
29 d
30 e
31 f
32 g
33 h
34 i
35 j
36 k
37 l
38 m
39 n
40 o
41 p
42 q
43 r
44 s
45 t
46 u
47 v
48 w
49 x
50 y
51 z
52 0
53 1
54 2
55 3
56 4
57 5
58 6
59 7
60 8
61 9
62 +
63 /
Padding =

Padding是什么意思呢?我们到时候会举个例子。

base64的流程

我们先把字符按照ascii编码:

ascii 字符
01001111 O
01110010 r
01111010 z

由于考场上我们不可能找到ascii表,所以我们要熟记:

ascii 字符
Space 32
0 48
A 65
a 97

如果考了其它的只能说出题人丧心病狂。

然后我们知道,ascii可以转化为8位二进制。那么我们可以得到以下表格:

然后我们按照每6位为一字符按照base64下标转换为新的字符串:

然后我们可以得到base64的新编码了!!

base64的Padding

那你肯定会说,如果不足刚好可以用6分开怎么办呢?

例如:

怎么办呢?我们可以选择补上0:

但是我们可能会发现,如果解码时混淆了怎么办呢?

所以我们需要加上Padding—— =

则变成:

如果我们要补上两位0:

然后你的一部分分就拿到了。

剩下就是解码了:

举个例子:cXB6Yw==

首先,对于原字符串,我们需要对其二进制编码。

如果结尾有 =。那么我们需要相应的减去结尾的0。

如例子:二进制编码后为:

然后因为后面有两个等号,所以要删去0000:

结束,然后你就很容易的做出那道题了,耶!

base64真题

这个暴力模拟,当你看到第一位时就发现错了……

白搞了!!!!!啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!!!


这个也是第一次判倍数排除ac。然后发现bd倒数第五位不同,单独求出即可

白算了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


草稿可以看最上面那张图,--- 上面的是第一题,下面的是第二题。

重申:您有毒!!


祝大家CSP2023 RP++。

……额,CSP2024,2025,2026,2027,总之都 RP++。

手算base64的更多相关文章

  1. URL安全的Base64编码

    Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码不仅比较简短,同时也具有不可 ...

  2. Base64编码

    Base64编码 写在前面 今天在做一个Android app时遇到了一个问题:Android端采用ASE对称加密的数据在JavaWeb(jre1.8.0_7)后台解密时,居然解密失败了!经过测试后发 ...

  3. Android数据加密之Base64编码算法

    前言: 前面学习总结了平时开发中遇见的各种数据加密方式,最终都会对加密后的二进制数据进行Base64编码,起到一种二次加密的效果,其实呢Base64从严格意义上来说的话不是一种加密算法,而是一种编码算 ...

  4. java单向加密算法小结(1)--Base64算法

    从这一篇起整理一下常见的加密算法以及在java中使用的demo,首先从最简单的开始. 简单了解 Base64严格来说并不是一种加密算法,而是一种编码/解码的实现方式. 我们都知道,数据在计算机网络之间 ...

  5. URI编码解码和base64

    概述 对于uri的编解码,在js中有3对函数,分别是escape/unescape,encodeURI/decodeURI,encodeURIComponent/decodeURIComponent. ...

  6. 通过HTML5的Drag and Drop生成拓扑图片Base64信息

    HTML5 原生的 Drag and Drop是很不错的功能,网上使用例子较多如 http://html5demos.com/drag ,但这些例子大部分没实际用途,本文将搞个有点使用价值的例子,通过 ...

  7. Base-64 字符数组或字符串的长度无效等问题解决方案

    项目特殊需要,调用ActiveX三维控件进行控件某一特殊部位的截图操作,这个截图保存由ActiveX控件控制保存到本地是没问题的,现在需要将这个截图上传到服务器,多人共享,就牵扯到需要读取本地文件…… ...

  8. android Base64 加密

    一 Base64加密 import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStre ...

  9. When I see you again(加密原理介绍,代码实现DES、AES、RSA、Base64、MD5)

    关于网络安全的数据加密部分,本来打算总结一篇博客搞定,没想到东西太多,这已是第三篇了,而且这篇写了多次,熬了多次夜,真是again and again.起个名字:数据加密三部曲,前两部链接如下: 整体 ...

  10. 网络安全——Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)哈希

    据说今天520是个好日子,为什么我想起的是502.500.404这些?还好服务器没事! 一.Base64编码 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之 ...

随机推荐

  1. Navicat 连接Oracle ORA-28547: connection to server failed, probable Oracle Net admin error

    Navicat 连接 Oracle 报 ORA-03135: connection lost contact ORA-28547: connection to server failed, proba ...

  2. CentOS 7相关操作

    防火墙操作 开启防火墙 sudo systemctl start firewalld.service 查看防火墙状态 sudo systemctl status firewalld.service 关 ...

  3. idea专业版和idea社区版整合Tomcat,并将war包部署

    目录 一.idea专业版部署 二.idea社区版部署 三.错误案例 开发过程中,由于需要运用云平台,所以从新配置开发环境,其它或多或少有些许问题,但解决起来较为轻松.而对于部署注册中心Eureka时, ...

  4. 安装centos系统,硬盘检测报错:修改BIOS为 Legacy

    进bios,将模式修改为legacy. 硬盘使用 MBR 分区,需要用 Legacy BIOS 启动,而不是 UEFI BIOS . 至于为什么安装的时候会报错? 可能是系统有这方面限制.也可能是别的 ...

  5. 2021-11-18 wpf模板

    自定义模板 <ControlTemplate x:Key="ButtonStyle1" TargetType="Button"> <Borde ...

  6. 园子的商业化努力-阿里云开发者社区合作:RDS MySQL Serverless 免费试用活动

    阿里云开发者社区这个月组织了一个针对"云数据库 RDS MySQL Serverless 版"免费试用用户的做任务活动,上周找园子合作,希望能在园子里推广一下这个活动. 由于时间太 ...

  7. Unity的IPostprocessBuild:深入解析与实用案例

    Unity IPostprocessBuild技术文章 Unity IPostprocessBuild是Unity引擎中的一个非常有用的功能,它可以让开发者在构建项目后自动执行一些操作.这个功能可以帮 ...

  8. Windows 环境下载、安装、使用(.Net 5.0) Redis 数据库及常见问题的解决

    〇.前言 Redis (Remote Dictionary Server 远程字典服务)是一个使用 ANSI C 编写的开源.包含多种数据结构,支持网络.基于内存.可选持久性的键值对存储数据库,是现在 ...

  9. MIT 6.828 Lab实验记录 —— lab1 Booting PC

    实验参考信息 MIT 6.828 lab1 讲义地址 MIT 6.828 课程 Schedule MIT 6.828 lab 环境搭建参考 MIT 6.828 lab 工具guide Brennan' ...

  10. 修改DataTable中的值

    DataTable dt ;for (int i = 0; i < dt.Rows.Count; i++) { DataRow row = dt.Rows[i]; row.BeginEdit() ...