base64原理及加密C、Python代码

Base64会使用一串固定编码,其标准为:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

这称为base64编码表,当然,该表不一定是固定的,可以自定义编码表,理解原理之后会很容易理解置换表的规则,因为base64加密靠的就是置换规则,而置换规则从base64置换表而来

原文经过加密会产生一系列索引,利用索引在这串固定编码中寻找对应的字符。

一开始先将需要加密的字符转为ASCII码对应的二进制,经过如下的替换规则后,将替换后每个字符对应的的二进制串再base64编码表中找对应字符替换

划分成6bit因为2的6次方为64,正好都在base64编码表中找到对应的字符

关于"="问题:因为每三个字符转换完后应变成四个,最后不足三个字符的情况也应变成四个,于是就产生了最后不补足"0"加"="的问题,如图:

理解了加密规则后,下面编写C和python代码

编写C代码之前,我们应该明确一件事情:

在表示byte时,不用char 而用 unsinged char
这是因为:
char与unsigned char都占用一个字节(8bit)的内存,unsigned char无符号位,byte也无符号位这一说法。但是将byte的值取出赋值给int,long等其它类型时,系统会最高位进行扩展。如果使用符号类型(char),则以符号位(最高位)扩展,会造成数据错误;如果使用无符号类型(unsigned char),则以零扩展,并不会造成数据错误。因此常用unsigned char常用来表示byte。

C语言代码如下(全部放出来过于冗杂,放上他人写的代码):

https://www.iteye.com/blog/lindexi-2378058

Python有现成的库可以调用,编解码直接使用库函数就可以

import base64

#编码
e64=base64.b64encode(" ".encode("utf-8"))
print(str(e64,"utf-8"))

#解码
s=" "
d64 = base64.b64decode(s)
print(d64)

倘若看了本文没有弄懂base64编码原理,可以看此篇详细原理:

一篇文章彻底弄懂Base64编码原理_程序新视界的博客-CSDN博客_base64编码

原理图片参考博客:C语言实现Base64编解码(加密和解密)_叶落花枯的博客-CSDN博客_c语言转base64

符号位扩展参考博客:

符号位扩展问题 (转载) - E_star - 博客园

感觉还可以就点个赞吧~~~~~~~

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SlientRainDay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值