url query 参数转字典型数据
我们经常使用 url
来传一些参数,query
参数的典型格式是:page=0&pagesize=10&sort=-channel_id,id
这样的。其中,包含中文和一些其他字符在内的,都会转码。因此,我们需要先解码,然后再进行转换。
此外,参数并不会每一次都在,因此又可能是传进来空字符串的情况,因此,还需要特殊处理。
我的代码是:
代码语言:javascript复制from urllib.parse import unquote
def query2Dict(text):
try:
text = unquote(text)
obj = dict([i.split('=') for i in text.split('&')])
return obj
except Exception as e:
return {}
原理非常简单,先用 &
进行分割成一维数组,然后数组的每一段都用 =
号分割,形成一个二维数组,最后将这个规律的二维数组利用 dict
方法转化成字典型数据即可。
如果传入的参数不是 query
数据,或者为空,则会解析失败,返回一个空的字典。
如上效果所示。
sanic
框架有自己的 query
参数获取方法,request.args
方法就是用来取这个参数的。但是经过对比,还是我的方法比较靠谱。如果你自己在使用 sanic
框架,可以对比一下。
Python RSA 加密以及解密
非对称加密是目前比较常用的一种加密类型。RSA
是一种非常常用的非对称加密方法。其使用公钥加密,然后用私钥解密。这是非常安全的。
我们先将公钥和私钥存储为文本文件,放在项目中,然后我写了下面两个方法分别来实现加密和解密
代码语言:javascript复制from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as CPK
import base64
# 加密方法
def rsaEncrypt(keypath, string):
with open(keypath, 'r') as f:
pubkey = f.read()
rsaKey = RSA.importKey(pubkey)
cipher = CPK.new(rsaKey)
res = base64.b64encode(cipher.encrypt(string.encode(encoding="utf-8")))
return res.decode(encoding = 'utf-8')
# 解密方法
def rsaDecrypt(keypath, enCode):
with open(keypath, 'r') as f:
prikey = f.read()
rsaKey = RSA.importKey(prikey)
cipher = CPK.new(rsaKey)
res = cipher.decrypt(base64.b64decode(enCode), "ERROR")
return res.decode(encoding = 'utf-8')
然后在需要使用的地方传入公钥或者私钥的文件地址,以及要加密或者解密的字符串,就能返回相应的结果了。