zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Spring/Java error: namespace element 'annotation-config' … on JDK 1.5 and higher
    警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Zhuo' did not find a matching property.
    快速学习Symfony4,Symfony4教程
    window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error
    Windows 安装nginx
    js焦点事件:onfocus、onblur、focus()、blur()、select()
    input 输入框只能输入纯数字
    随机抽取不重复的数组元素
    常用 书签 mark 常用网站
    仿真灯泡 电灯泡 灯光 光环闪烁 流星雨
  • 原文地址:https://www.cnblogs.com/xhds/p/12227822.html
Copyright © 2011-2022 走看看