Common encryption methods and implementation in Python Python中常用的加密方法及实现

1、 前言

我们提到的加密方法都是二进制编码格式的加密,它对应于Python中的字节。

因此,当我们在Python中加密操作时,我们应该确保对字节进行操作,否则我们将报告一个错误。

encode()和decode()方法可用于将字符串和字节相互转换。具体如下:

# -*- coding:UTF-8 -*-
__author__ = 'rxz'

# 方法中不传参数则是以默认的utf-8编码进行转换
a = "中国欢迎您".encode("utf-8")
print(a) # b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\xac\xa2\xe8\xbf\x8e\xe6\x82\xa8'

b = a.decode("utf-8")
print(b) #中国欢迎您

注意:两位数的十六进制通常用于显示二进制字节。

http://blog.sina.com.cn/s/blog_184e9f38b0102z262.html
使用binascii模块,我们可以将以十六进制显示的字节转换为加密和解密中更常用的显示模式

# -*- coding:UTF-8 -*-
__author__ = 'rxz'
import binascii

# 方法中不传参数则是以默认的utf-8编码进行转换
a = "中国欢迎您".encode("utf-8")
print(a) # b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\xac\xa2\xe8\xbf\x8e\xe6\x82\xa8'

c = binascii.b2a_hex('中国欢迎您'.encode())
print("c===",c) # c=== b'e4b8ade59bbde6aca2e8bf8ee682a8'

d = binascii.a2b_hex(c)
print(d) #b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\xac\xa2\xe8\xbf\x8e\xe6\x82\xa8'

v = binascii.a2b_hex(c).decode("utf-8")
print(v)# 中国欢迎您
b = a.decode("utf-8")
print(b) #中国欢迎您

2、 URL编码

1介绍

普通URL只能包含ASCII字符,即字符、数字和一些符号。URL编码是浏览器为避免URL中的特殊字符(如汉字)而采用的一种编码方法。实际上,它是用%将ASCII范围以外的字符转换为十六进制格式。

# -*- coding:UTF-8 -*-
__author__ = 'rxz'
from urllib import parse

a = parse.quote("中国欢迎您")
print(a) #  %E4%B8%AD%E5%9B%BD%E6%AC%A2%E8%BF%8E%E6%82%A8

b = parse.unquote(a)
print(b) #中国欢迎您

3、 Base64编码

1介绍

Base64是一种用64个字符表示任意二进制数据的方法。

Base64编码是密码学的基石。任何二进制数据都可以用Base64编码。所有数据都可以被编码到一个文本文件中,该文件只能用65个字符表示。(65个字符:a~z a~z 0~9+/=)编码后的数据~=编码前数据的4/3,大约大1/3。

2Base64编码原理

将所有字符转换为ASCII。

将ASCII码转换为8位二进制。

二进制3被分成一组(少于3的由0补充),总共24位,然后分成4组,每组6位。

在6位前加两个0,组成8位。

将0后的二进制转换为十进制。

从base64编码表中获取与decimal相对应的base64编码。

三。Base64编码说明

在转换过程中,三个字节的数据依次放入一个24位缓冲区,第一个字节占据高位。

如果数据少于3个字节,则缓冲区中的剩余位用0补充。然后,每次取出6个比特,根据其值编码后选择相应的字符作为输出。

继续,直到所有输入数据都被转换。

如果剩下最后两个输入数据,则在编码结果后加一个“=”。

如果只剩下一个输入数据,则在编码结果后加2“=”。

如果没有剩余的数据,不要添加任何内容,以确保数据恢复的正确性。

4Base64在Python中的使用

Python内置的Base64模块可以直接对Base64进行编码和解码

(0)

相关推荐

  • 听说你的程序又双叒叕乱码了

    来源:Python 技术「ID: pythonall」 在我刚开始接触编程的时候,时不时就会遇到程序乱码问题.亦或是控制台输出乱码,亦或是数据库乱码,亦或是网页端显示乱码,总之乱码无处不在,它总是会在 ...

  • 浅谈 Python 2 中的编码问题

    Python 2.x 里的编码实在是一件令人烦躁的事情.不断有初学者被此问题搞得晕头转向.我自己也在很长一段时间内深受其害,直到现在也仍会在开发中偶尔被坑.在本教室的提问和讨论中,编码问题也占据了相当 ...

  • Python|字符串中第二大的数字

    问题描述给你一个混合字符串s,请你返回s中第二大的数字,如果不存在第二大的数字,请你返回-1.混合字符串由小写英文字母和数字组成.示例:输入:s = 'dfa12321afd'输出:2解决方案这是一道 ...

  • Python学习之常用关键字!

    你知道Python常用关键字有哪些吗?有哪些关键字是你不太了解的呢?今天小编通过这篇文章为大家介绍一下. 1.内置常量:False.none.True; >>> False == 0 ...

  • python lxml中etree的简单应用

    这篇文章主要介绍了python lxml中etree的简单应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧我一般都是通过xpa ...

  • Python | 删除链表的节点问题解决方法

    问题描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点.返回删除后的链表的头节点.示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: ...

  • 机器学习用Python—Python集成工具包Anaconda安装步骤

    近几年来,机器学习以及深度学习的研究异常火热,机器学习和深度学习也逐渐渗透到各个领域,当然,脑科学领域也不例外.利用机器学习和深度学习技术解决脑科学领域中的问题,成为目前最为火热的研究方向之一.而神经 ...

  • Selenium2+python自动化65-js定位几种方法总结

    前言 一.以下总结了5种js定位的方法 除了id是定位到的是单个element元素对象,其它的都是elements返回的是list对象 1.通过id获取 document.getElementById ...

  • python接口自动化29-requests超时重试方法

    前言 "由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败",这是经常遇到的问题 requests.exceptions.ConnectionError: HTT ...

  • python保存生成的图像的方法

    这篇文章将为大家详细讲解有关python保存生成的图像的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获. python中保存图片的方法: 1.使用io模块的ims ...

  • python爬取下载m3u8加密视频,原来这么简单!

    python爬取下载m3u8加密视频,原来这么简单!