加密解密算法之Base64x

6 sec read

在程序开发中,我们会经常使用Base64对字符串或二进制数据进行编码解码,虽然字符串在经过Base64编码后看上去很像被加密过,但是并不能成为加密解密算法,原因是Base64的编码解码过程非常的简单,且编码解码的流程的算法是公开的,起不到任何加密的效果。Base64的设计目的也并不是为了加密。

所谓Base64,就是说选出64个字符—-小写字母a-z、大写字母A-Z、数字0-9、符号”+”、”/”(再加上作为垫字的”=”,实际上是65个字符)—-作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。具体来说,转换方式可以分为四步。

  • 将每三个字节作为一组,一共是24个二进制位。
  • 将这24个二进制位分为四组,每个组有6个二进制位。
  • 在每组前面加两个00,扩展成32个二进制位,即四个字节。
  • 根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。

base64编码表

因为,Base64将三个字节转化成四个字节,因此Base64编码后的文本,会比原文本大出三分之一左右。

从上面的编码表中,我们可以看到采用公共的Base64并不能其实简单的加密和解密,但可以通过适当的修改 Base64 来实现简单加密与解密。尽管不及专门的对称加密和非对称加密的安全性,但性能远胜于专门的加密解密过程,且可以实现可见字符的传输。适用于安全要求不高,对密文要求可见,且密文长度受限的场景。

Base64x的原理非常的简单,就是将编码表的顺序进行打乱,再进行编码,具体代码如下:

打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

用户模型之三户模型

10 sec read

常用算法之分治法

分治法概念 分治法(divide-and-conquer)字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。分治有两个特点: 子问题相互独立且与原问题形式 ...
1 min read

使用Python更换外网IP

在进行数据抓取时,经常会遇到IP被限制的情况,常见的解决方案是搭建代理IP池,或购买IP代理的服务。除此之外,还有一个另外的方法就是使用家里的宽带网络进行抓取。由于家里的宽带每次断开重新连接时都会分配一个新的IP,所以在我们抓取数据的时候,判断 ...
36 sec read

Leave a Reply

Your email address will not be published. Required fields are marked *