0. 前言:
这里所说的加密方式,都是指对二进制编码的(操作的是bytes)。两位十六进制常常用来显示一个二进制字节,一个字节占8位。
利用 binascii 模块可以将十六进制显示的字节转换成我们在加解密中更常用的显示方式:
import binascii
sra= '南京hello非'
sr1= binascii.b2a_hex(sra.encode())
print(sr1)
print(binascii.a2b_hex(sr1))
print(binascii.a2b_hex(sr1).decode())
1.URL编码
正常的URL中是只能包含ASCII字符的,也就是字符、数字和一些符号。而URL编码就是一种浏览器用来避免url中出现特殊字符(如汉字)的编码方式。
其实就是将超出ASCII范围的字符转换成带 % 的十六进制格式。
from urllibimport parse
# URL编码
sra= '南京hello非'
sc= parse.quote(sra)
print(sc)
print(parse.unquote(sc))
2. Base64编码
Base64是一种用64个字符来表示任意二进制数据的方法。
Base64编码可以成为密码学的基石。可以将任意的二进制数据进行Base64编码。所有的数据都能被编码为并只用64个字符就能表示的文本文件。( 64字符:A~Z a~z 0~9 + / )编码后的数据~=编码前数据的4/3,会大1/3左右。(编码结果后面可能跟零个到两个‘=’作为补位)
Python内置的 base64 模块可以直接进行base64的编解码
注意:用于base64编码的,要么是ASCII包含的字符,要么是二进制数据
import base64
sra= '南京hello非'
sc= base64.b64encode(sra.encode())
print(sc)
print(base64.b64decode(sc).decode())
3. MD5加密
由于MD5模块在python3中被移除,在python3中使用 hashlib 模块进行md5操作
md5的长度,默认为128bit,也就是128个0和1的二进制串。这样表达是很不友好的。所以将二进制转成了16进制,每4个bit表示一个16进制,所以128/4 = 32 换成16进制表示后,为32位了。
为什么网上还有md5是16位的呢?
其实16位的长度,是从32位md5值来的。是将32位md5去掉前八位,去掉后八位得到的
import hashlib
# md = hashlib.md5()
strs= ['你好','你哈','hell','hell']
st= []
for iin strs:
md= hashlib.md5()
md.update(i.encode())
st.append(md.hexdigest())
print(st)
4. Python加密库PyCryptodome
但安装问题尚未解决
网友评论