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. [Spring+SpringMVC+Mybatis]框架学习笔记:前言_目录

    下一章:[Spring+SpringMVC+Mybatis]框架学习笔记(一):SpringIOC概述 前言 本笔记用于记录本人(Steven)的SSM框架学习历程,仅用作学习.交流,不用于商业用途, ...

  2. Socket 入坑

    什么是Socket Socket(套接字)是在计算机网络中实现通信的一种机制.它提供了一种应用程序编程接口(API),允许应用程序通过网络进行数据传输和通信. 在网络通信中,Socket 可以被看作是 ...

  3. KVM "shutting down, reason=crashed" 问题处理

    打开debug日志抓取信息 2022-10-12 07:42:43.698+0000: 63115: debug : processMonitorEOFEvent:4814 : Monitor con ...

  4. js的一些小问题集合

    1.等于号的应用 function reverse(){ var checkbox = document.getElementsByName("hobby"); for (let ...

  5. openpyxl 设置单元格自动换行

    解决方案 openpyxl的alignment函数中的参数:wrapText=True,就可以了 from openpyxl.styles import Alignment worksheet.cel ...

  6. 【pandas小技巧】--反转行列顺序

    反转pandas DataFrame的行列顺序是一种非常实用的操作.在实际应用中,当我们需要对数据进行排列或者排序时,通常会使用到Pandas的行列反转功能.这个过程可以帮助我们更好地理解数据集,发现 ...

  7. 超详细的mysql总结(DQL)

    上一篇文章总结了 DDL.DML的使用,这一篇文章把剩下的 DQL 加上~   DQL(Data Query Language)即数据库查询语言,用来查询所需要的信息,在查询的过程中,需要判断所查询的 ...

  8. MindSponge分子动力学模拟——软件架构(2023.08)

    技术背景 在前面一篇文章中,我们介绍了MindSponge的两种不同的安装与使用方法,让大家能够上手使用.这篇文章主要讲解MindSponge的软件架构,并且协同mindscience仓库讲解一下二者 ...

  9. MySQL——后码锁(Next-Key Block)

    众所周知,Mysql的事务隔离级别分为4个,分别是READ-UNCOMMITED,READ-COMMITED,REPEATABLE-READ,SERIALIZABLE,在常规数据库概论中,前三种事务隔 ...

  10. PHP调用API接口的方法及实现

    随着互联网.云计算和大数据时代的到来,越来越多的应用程序需要调用第三方的API接口来获取数据,实现数据互通和协同工作.PHP作为一种常用的服务器端语言,也可以通过调用API接口来实现不同系统的数据交互 ...