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进行编码和解码