base64详解及实现
概述
base64 说起来大家应该都是很熟悉的,很多类型的数据都可以转成base64的编码规则,例如图片,pdf,文本,邮件内容等。
什么是base64
根据RFC2045的定义,base64被定义为:base64内容传送编码被设计用来把任意系列的8位字节描述为一种不易被人直接识别的形式 简单来说,就是一种用64个字符来表示二进制数据的方法。
有啥作用
由于某些系统只能使用ASCII字符,base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。
用记事本打开exe,jpg,pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让文本软件能处理二进制数据,就需要一个二进制到字符串的转换方法,而base64 就是最常见的一个方法。特别适合在http,mime协议下快熟传输数据
base64其实不是安全领域下的加密解密算法,虽然有时候能看到所谓的base64加密解密,其实这顶多算是一个编码算法,虽然编码之后不能直接看到原文,但是这种方式很初级。
啥原理
base64的编码方法要求把每三个8bit的字节转换成四个6bit的字节,其中,转换之后的这四个字节中每6个bit为有效数据,空余的那两个补零成为一个字节。如果要编码的二进制数据不是3的倍数,最后剩下一个或者两个字节怎么办呢?base64会在末尾补零,再在编码的末尾加上一个或者两个‘=’。
简单的python实现
这边说明下,我这里用的是python2.7

运行之后结果如下:

# coding: utf-8 # 引入模块
import base64 encodeStr = '厨房小码农'
# 加密
s1 = base64.b64encode(encodeStr)
# 解密
s2 = base64.b64decode(s1)
print s1
print s2
base64详解及实现的更多相关文章
- ArrayBuffer转base64详解
先贴代码: const base64String = window.btoa(String.fromCharCode(... new Uint8Array(buffer))) 看起来非常的简洁,优美. ...
- Java 8新特性探究(五)Base64详解
BASE64 编码是一种常用的字符编码,在很多地方都会用到.但base64不是安全领域下的加密解密算法.能起到安全作用的效果很差,而且很容易破解,他核心作用应该是传输数据的正确性,有些网关或系统只能使 ...
- Android 数据加密算法 Des,Base64详解
一,DES加密: 首先网上搜索了一个DES加密算法工具类: import java.security.*;import javax.crypto.*; public class DesHelper { ...
- Java 8新特性探究(十一)Base64详解
开发十年,就只剩下这套架构体系了! >>> BASE64 编码是一种常用的字符编码,在很多地方都会用到.但base64不是安全领域下的加密解密算法.能起到安全作用的效果很差,而且 ...
- 图片上传预览转压缩并转base64详解(dShowImg64.js)
hello,大家好,游戏开始了,欢迎大家收看这一期的讲解.本次的内容是图片的上传预览.最后发源码链接.废话不多说,先上图. 待上传图像 点击蓝色框内,pc可以选择文件,移动端选择拍照或选择图片进行上传 ...
- Base64编码格式详解
什么是Base64? 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式.(The Base64 Content-T ...
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
EF+LINQ事物处理 在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...
- javascript中的Base64.UTF8编码与解码详解
javascript中的Base64.UTF8编码与解码详解 本文给大家介绍的是javascript中的Base64.UTF8编码与解码的函数源码分享以及使用范例,十分实用,推荐给小伙伴们,希望大家能 ...
- 详解前端模块化工具-webpack
webpack是一个module bundler,抛开博大精深的汉字问题,我们暂且管他叫'模块管理工具'.随着js能做的事情越来越多,浏览器.服务器,js似乎无处不在,这时,使日渐增多的js代码变得合 ...
随机推荐
- [ Python ] KMP Algorithms
def pmt(s): """ :param s: the string to get its partial match table :return: partial ...
- POJ 2154 color (polya + 欧拉优化)
Beads of N colors are connected together into a circular necklace of N beads (N<=1000000000). You ...
- ArrayList 除重
看到一段简洁的 ArrayList 除重代码: protected final <T> List<T> removeDuplicates(List<T> list) ...
- flask 定义数据库关系(一对多)
定义关系 在关系型数据库中,我们可以通过关系让不同表之间的字段建立联系.一般来说,定义关系需要两步,分别是创建外键和定义关系属性.在更复杂的多对多关系中,我们还需要定义关联表来管理关系.下面我们学习用 ...
- Linux进程相关命令使用场景
Linux进程相关命令使用场景 在Linux系统上工作时,我们常常会碰到很多和进程相关的查询场景,今天在这里进行详细的讲解,进程相关的对象包括以下几个: 端口:Port 进程号:PId 执行文件所在路 ...
- 自制电脑usb红外遥控键盘
2010-08-08 19:20:00 看个ppt,还要一直按键盘或鼠标,能不能拿个遥控器控制一下. 动动脑,自己做一个吧. 电路分2部分,遥控器为发射部分,单片机为解码部分并且包含usb键盘功能. ...
- Linux分区、文件系统
Linux分区类型: ◆主分区:总共最多只能分四个 ◆扩展分区:只能有一个,也算作主分区的一种,也就是 说主分区不能存储数据和格式化,必须再划分为逻辑分区才能使用. ◆逻辑分区:逻辑分区是在扩展分区中 ...
- Python if条件判断
if else 判断交流 1.判断用户名密码对不对. import getpass _username = 'devin' _password = 'abc123' username = input( ...
- Java爬取B站弹幕 —— Python云图Wordcloud生成弹幕词云
一 . Java爬取B站弹幕 弹幕的存储位置 如何通过B站视频AV号找到弹幕对应的xml文件号 首先爬取视频网页,将对应视频网页源码获得 就可以找到该视频的av号aid=8678034 还有弹幕序号, ...
- Java字节码浅析(二)
英文原文链接,译文链接,原文作者:James Bloom,译者:有孚 条件语句 像if-else, switch这样的流程控制的条件语句,是通过用一条指令来进行两个值的比较,然后根据结果跳转到另一条字 ...