python 常用代码段汇总(三) url query 参数转字典 rsa 加密解密

2019-05-27 08:57:15 浏览数 (1)

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')

然后在需要使用的地方传入公钥或者私钥的文件地址,以及要加密或者解密的字符串,就能返回相应的结果了。

0 人点赞