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 网络模块

七天学会Python基础-第七天3/3-自定义模块和random模块

python基础学习第七天

python第七天

python学习日记第七天tkinter模块3

python学习日记第七天tkinter模块3