base64编解码学习及python代码实现
Base64是一种用64个字符来表示任意二进制数据的方法。
Base64编码可以成为密码学的基石。可以将任意的二进制数据进行Base64编码。所有的数据都能被编码为并只用65个字符就能表示的文本文件。( 65字符:A~Z a~z 0~9 + / = )编码后的数据~=编码前数据的4/3,会大1/3左右。
Base64编码的原理

- 将所有字符转化为ASCII码。
- 将ASCII码转化为8位二进制 。
- 将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位。
- 统一在6位二进制前补两个0凑足8位。
- 将补0后的二进制转为十进制。
- 从Base64编码表获取十进制对应的Base64编码。
Base64编码的说明
- 转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。
- 数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6个bit,按照其值选择查表选择对应的字符作为编码后的输出。
- 不断进行,直到全部输入数据转换完成。
- 如果最后剩下两个输入数据,在编码结果后加1个“=”。
- 如果最后剩下一个输入数据,编码结果后加2个“=”。
- 如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。
PYHTON的源码实现
# -*- coding: utf-8 -*-
# coding=utf-8
import base64 print("example one")
encode = base64.b64encode(b'I love you') print(encode) decode = base64.b64decode(encode) print(decode) print("example two") encode = base64.b64encode(b'I love you$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@@@@@@@@@@@@@@@@@@MMMMMMMMMMMMMMMMMMM') print(encode) decode = base64.b64decode(encode) print(decode)- 参考文档: https://www.jianshu.com/p/4ba20afacce2
base64编解码学习及python代码实现的更多相关文章
- python rsa 加密解密 (编解码,base64编解码)
最近有需求,需要研究一下RSA加密解密安全:在网上百度了一下例子文章,很少有文章介绍怎么保存.传输.打印加密后的文本信息,都是千篇一律的.直接在一个脚本,加密后的文本信息赋于变量,然后立马调用解密.仔 ...
- python base64 编解码,转换成Opencv,PIL.Image图片格式
二进制打开图片文件,base64编解码,转成Opencv格式: # coding: utf-8 import base64 import numpy as np import cv2 img_file ...
- 各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式
编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放 license收费等 ...
- openssl命令行Base64编解码
openssl对base64编解码的规范支持较差,用它编解码的结果别的语言如php处理很不方便,注意的几点整理如下 1,如果php加密结果做base64编码长度小于64,则需要添加一个换行符opens ...
- 视音频编解码学习工程:AAC格式分析器
=====================================================视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习工 ...
- 视音频编解码学习工程:FLV封装格式分析器
===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...
- 视音频编解码学习工程:H.264分析器
=====================================================视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习工 ...
- 集显也能硬件编码:Intel SDK && 各种音视频编解码学习详解
http://blog.sina.com.cn/s/blog_4155bb1d0100soq9.html INTEL MEDIA SDK是INTEL推出的基于其内建显示核心的编解码技术,我们在播放高清 ...
- 我的Android进阶之旅------>Android中编解码学习笔记
编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...
随机推荐
- zookeeper资料
ZooKeeper 入门
- oracle竖表转横表字段合并
select * from( SELECT t.ID, ISTATUS, ITIMEOUT, IRESENDTIMEOUT, IRESENDFIXED, IAUTOUPGRADE, STRTERMPR ...
- Linux 查看网络状态工具
1. iftop 效果如下图: 界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的. 中间的<= =>这两个左右箭头,表示的是流量的方向. TX:发送流量RX:接收流量T ...
- 洛谷P1386座位安排
座位安排 今天,在机房里做了这道题目,我来整理一下思路. 首先读懂题意,这n个人是不需要按1到n来一次安排的,也就是说你可以先安排任意一个人. 那么有一种很好排除的情况,那就是对于大于等于i的作为的需 ...
- java中如何使用break跳出多重循环
java 中已知的三种跳出多重循环的方式: System.out.println("---------java中跳出多重循环的三种方式:---------"); System.ou ...
- Linux的历史发展及应用
Linux的基本介绍: Linux的历史: 操作系统,英语Operating System简称为OS.说道操作系统就需要先讲一讲Unix,UNIX操作系统,是一个强大的多用户.多任务操作系统,支持多种 ...
- js 控制光标到指定位置
js控制光标到指定节点位置(适用于富文本编辑器中) function placeCaretAtEnd(el) { //传入光标要去的jq节点对象 el.focus(); if (typeof wind ...
- shiro简单配置 (写的不错 收藏一下)
抄袭的连接:https://blog.csdn.net/clj198606061111/article/details/24185023 注:这里只介绍spring配置模式. 因为官方例子虽然中有更加 ...
- java环境下载
https://repo.huaweicloud.com/java/jdk/8u201-b09/
- [转]找到MySQL发生swap的原因
背景: 最近遇到了一个郁闷的问题:明明OS还有大量的空闲内存,可是却发生了SWAP,百思不得其解.先看下SWAP是干嘛的,了解下它的背景知识.在Linux下,SWAP的作用类似Windows系统下的“ ...