python中各个编码得转换,并且区分python2和python3

1.url编码的相互转换

  • url编码是一种浏览器用来打包表单输入的格式

  • python3中

from urllib import parse
parse.quote('union select null,null,null')  # python3中的用法  
parse.unquote("union%20select%20null%2Cnull%2Cnull")
parse.urlencode({'x':'2333','y':'666'})
  • python2中

from urllib import *
quote('union select null,null,null')  # python2中的用法
unquote("union%20select%20null%2Cnull%2Cnull")
urlencode({'x':'2333','y':'666'})

2.Base64

  • Base64常常用作网页表单和http传输的一些参数,也常用于邮件协议传输用户信息等

import base64
base64.b64encode(b"I love you")  # 加密
base64.b64decode(b'SSBsb3ZlIHlvdQ==')  # 解密
  • base32加密和解密

import base64
base64.b32encode(b'I love you')  # 加密
base64.b32decode(b'JEQGY33WMUQHS33V')  # 解密
  • 说明: 上面的是python3中base64加密解密,python2中不需要加b.如果想要base16,只需要模仿上面即可

3.Hex

  • python3中字符串转十六进制编码

import binascii
binascii.b2a_hex(u'I love you'.encode("utf8"))  # 加密
binascii.a2b_hex(b'49206c6f766520796f75').decode("utf8")  # 解密
  • python2中字符串转16进制

'I love you'.encode('hex')  # 加密
'49206c6f766520796f75'.decode('hex')  # 解密

4.Ascii

  • python2中将字符串装换为Ascii码

map(ord,'I love you')  # 加密
''.join(map(chr,[73, 32, 108, 111, 118, 101, 32, 121, 111, 117])) # 解密
  • python3中字符串转换为Ascii码

a = map(ord,'I love you')  # 加密,由于python3中返回的是生成器对象
list(a)
​
b = map(chr,[73, 32, 108, 111, 118, 101, 32, 121, 111, 117])  # 相同道理
''.join(list(b))

5.Md5

  • md5加密是不可逆的,解密很费劲,一般使用暴力破解

from hashlib import md5
m = md5()
m.update(b'I love you')  # python2去掉b  
m.hexdigest()

6 Uncode和中文的相互转换

  • python3中

a = '我爱你'
a.encode()  # 转换为uncode
b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'.decode()  # 转换为中文
  • python2中

unicode('人生苦短','gbk')  # 编码
print(u'\u4eba\u751f\u82e6\u77ed')  # 解码直接输出
展开阅读全文

没有更多推荐了,返回首页