加密解密算法之Base64x

5 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

《怕蛇的人怎么学Python》:开篇

先前在自己的博客上,零散的写了一些Python的学习笔记,涉及到的内容比较凌乱,完全没有逻辑。反思自己对所学的
3 sec read

Hive SQL中的datediff、current_dat…

Hive SQL中的datediff函数返回的是2个日期的天数。在使用过程中发现了一个比较有趣的坑: SELE
2 min read

使用Python进行相关性分析

在数据分析时,经常会针对两个变量进行相关性分析。在Python中主要用到的方法是pandas中的corr()方
42 sec read

发表评论

电子邮件地址不会被公开。 必填项已用*标注