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. ChatGPT「代码解释器」正式开放,图片转视频仅需30秒!十大令人震惊的魔法揭秘

    经过超过三个月的等待,ChatGPT「代码解释器」终于全面开放.这是一大波神奇魔法的高潮. OpenAI的科学家Karpathy对这个强大的代码解释器测试版赞不绝口.他把它比作你的个人数据分析师,可以 ...

  2. 数据分析之jupyter notebook工具

    一.jupyter notebook介绍 1.简介 Jupyter Notebook是基于网页的用于交互计算的应用程序.其可被应用于全过程计算:开发.文档编写.运行代码和展示结果.--Jupyter ...

  3. jQuery事件自动触发

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. C#.NET 国密SM4对称加解密 与JAVA互通 ver:20230731

    C#.NET 国密SM4对称加解密 与JAVA互通 ver:20230731 .NET 环境:.NET6 控制台程序(.net core). JAVA 环境:JAVA8,带maven 的JAVA控制台 ...

  5. 八万乌云漏洞库——Ubuntu本地Docker搭建环境

    环境准备 ubuntu16.04虚拟机 换国内源 vi /etc/apt/sources.list 阿里源 deb http://mirrors.aliyun.com/ubuntu/ xenial m ...

  6. jQuery项目的小技巧

    1.返回顶部按钮 你可以利用 animate 和 scrollTop 来实现返回顶部的动画,而不需要使用其他插件. // Back to top // Back to top $('a.top').c ...

  7. [k8s]使用私有harbor镜像源

    前言 在node上手动执行命令可以正常从harbor拉取镜像,但是用k8s不行,使用kubectl describe pods xxx 提示未授权 unauthorized to access rep ...

  8. [loki]轻量级日志聚合系统loki快速入门

    前言 简述:loki是由grafana开源的日志聚合系统,相较于ELK.EFK更轻量. loki特性: 不对日志进行全文索引.通过存储压缩非结构化日志和仅索引元数据,Loki 操作起来会更简单,更省成 ...

  9. nlp入门(二) :商品信息可视化与文本分析实战

    源码请到:自然语言处理练习: 学习自然语言处理时候写的一些代码 (gitee.com) 数据来源:麦卡里价格建议挑战Mercari Price Suggestion Challenge | Kaggl ...

  10. DateTime 相关的操作汇总【C# 基础】

    〇.前言 在日常开发中,日期值当然是不可或缺的,能够清晰的在脑海中梳理出最快捷的实现也非常重要,那么今天就来汇总一下. 一.C# 中的本机时间以及格式化 如何取当前(本机)时间?很简单,一句话解决: ...