python-网络安全编程第七天(base64模块)
Posted 笑花大王
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-网络安全编程第七天(base64模块)相关的知识,希望对你有一定的参考价值。
前言
睡不着,那就起来学习其实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模块)的主要内容,如果未能解决你的问题,请参考以下文章
Vue总结第七天~Promise网络请求和axios 网络模块