前言

睡不着,那就起来学习其实base64模块很早之前用过今天做爬虫的时候有个URL需要用它来编码一下 所以百度又学了一下遇到最大的问题就是python3和python2区别问题 python3的这个不支持直接上字符串纠结了好久。

base64编码

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

BASE64其实不是安全领域下的加密解密算法。虽然有时候经常看到所谓的base64加密解密。其实base64只能算是一个编码算法,对数据内容进行编码来适合传输。虽然base64编码过后原文也变成不能看到的字符格式,但是这种方式很初级,很简单。

编码后的数据是一个字符串,其中包含的字符为:A-Z、a-z、0-9、+、/。共64个字符:26 + 26 + 10 + 1 + 1 = 64。【注:其实是65个字符,“=”是填充字符】。

BASE64应用
需要明文保存二进制数据时,可以将不可打印的二进制数据经过Base64编码转成可打印的字符串。

Mozilla Thunderbird和Evolution用Base64来保密电子邮件密码
Base64也会经常用作一个简单的“加密”来保护某些数据,而真正的加密通常都比较繁琐。
垃圾讯息传播者用Base64来避过反垃圾邮件工具,因为那些工具通常都不会翻译Base64的讯息。
在LDIF档案,Base64用作编码字串。

python-base64模块

简单的案例

# 导入 base64模块
import base64 # 给定需要转换的字符串
str1 = "笑花大王是一个非常厉害的CTF手"
#编码
result=base64.b64encode(str1.encode())
print(type(result))
print(result) #解码
result=base64.b64decode(result)
print(type(result))
print(result)

为什么要使用encode() decode()?

因为python3中对文本和二进制做了比较清晰的区分。python3默认编码为unicode,由str类型进行表示。二进制数据使用byte类型表示,所以不会将str和byte混在一起。在实际应用中我们经常需要将两者进行互转

1:字符串通过编码转换为字节码,字节码通过解码转换为字符串

str--->(encode)--->bytes,bytes--->(decode)--->str

注意在python2之前base64模块函数的参数可以直接使用字符串,python3以后只能适用二进制字符串。

参考学习

https://blog.csdn.net/zengxiantao1994/article/details/60465165

https://www.cnblogs.com/chownjy/p/6625299.html

python-网络安全编程第七天(base64模块)的更多相关文章

  1. Python的 json 、 hashlib 、 Base64 模块

    json模块 简介 全称"JavaScript Object Notation" (JavaScript对象表示法)它是一种基于文本,独立于语言的轻量级数据交换格式 以易于让人阅读 ...

  2. 【python网络编程】使用rsa加密算法模块模拟登录新浪微博

    一.基础知识 http://blog.csdn.net/pi9nc/article/details/9734437 二.模拟登录 因为上学期参加了一个大数据比赛,需要抓取数据,所以就想着写个爬虫抓取新 ...

  3. Python网络编程(3)——SocketServer模块与简单并发服务器

    主要类型 该模块有四个比较主要的类,其中常用的是 TCPServer 和 UDPServer. 1. TCPServer 2. UDPServer 3. UnixStreamServer,类似于TCP ...

  4. Python网络编程(2)——socket模块(2)

    目录: 1. 异常 2. 地址族 3. 套接字类型 4. 模块方法 5. Socket对象与实例方法 socket模块提供了Python中的低层网络连接接口,用于操作套接字操作. 异常 socket模 ...

  5. Python核心编程读笔 11:模块

    第12章 模块 1.基本概念 模块的文件名就是模块名字.py 每个模块都定义了自己唯一的名称空间 模块的搜索路径:会被保存在 sys 模块的 sys.path 变量里 >>>sys. ...

  6. Python网络编程、爬虫之requests模块使用

    一.python操作网络,也就是打开一个网站,或者请求一个http接口,使用urllib模块. urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib ...

  7. python网络编程-OSI七层模型详解

    OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...

  8. Python核心编程(第七章)--映像和集合类型

    字典:它是一个容器类型,能存储任意个数的Python对象,也包括其他容器类型,Python的字典是作为可变的哈希表实现的 映像类型中的数据是无序排列的   可以用工厂方法dict()来创建字典,也可以 ...

  9. 【4】python核心编程 第七章-映射和集合类型

    1.映射类型的相关函数 函数 操作 dict([container]) 创建字典的工厂函数.如果提供了容器类(container) , 就 用其中的条目填充字典,否则就创建一个空字典. len(map ...

随机推荐

  1. S10 TES的八强赛,创造了奇迹,看看比赛时网友们怎么说的

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 我相信很多观众会和我一样吧,当TES赢下第一局后开始心怀侥幸,赢下第二局后觉 ...

  2. postgresql 导出数据库与数据表

    单表导出 pg_dump --host 127.0.0.1 --port 5432 --username "postgres" --role "postgres" ...

  3. 编译安装tree命令

    查看当前的tree [12:33:33 root@C8[ ~]#rpm -qi tree Name : tree Version : 1.7.0 Release : 15.el8 Architectu ...

  4. JS错误写法[清除DOM]

    前言 我现在总结一下我之前敲代码犯的错误,清除DOM元素,我们开始写代码吧! HTML <h1 style="font-size: 18px;font-weight: bold;col ...

  5. OpenSpiel 随笔 05.14

    ------------恢复内容开始------------ 这两天年总算把自己的游戏写完了,也通过了所有的测试. 我将自己的代码上传到了我的github上, 地址是 https://github.c ...

  6. Redis---09Redis集群(二)

    一.集群的Jedis开发: 1.导入jar包 jedis-2.8.1.jar commons-pool2-2.4.2.jar 2.代码 public class TestCluster { publi ...

  7. OpenCascade拓扑对象之:TopoDS_Shape的三要素

    @font-face { font-family: "Times New Roman" } @font-face { font-family: "宋体" } @ ...

  8. 浅析I/O模型-select、poll、epoll

    I/O流 概念 (1)c++中将数据的输入输出称之为流(stream),在c++中,流被定义为类,成为流类(stream class),其定义的对象为流对象. (2)文件,套接字(socket),管道 ...

  9. DP百题练(三)

    目录 DP百题练(三) DP百题练(三) 不知不觉也刷了 50 道 DP 题了,感觉确实有较大的进步.(2020.3.20) 这里的 (三) 主要用来记录 DP 的各种优化(倍增.数据结构.斜率.四边 ...

  10. uniapp微信授权操作后事件不触发

    微信小程序官网代码 <button form-type="submit" open-type="getUserInfo" bindgetuserinfo= ...