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

最近一直在写一套基于 pythonsanic web 框架库的 restFul 接口的底层框架。由于我是初学,挑战这个任务基本上是属于不自量力型的。但目前我核心构架已经完全写出来了,我会在近期整理好相关资料后,写一系列的文章分享给大家。

这个挑战的过程很简单,因为大家知道我只是一个前端工程师。但是挑战的过程充满乐趣,今天,我就将我遇到的一些小的知识点,做一个汇总,也方便以后自己查找和复习。

url query 参数转字典型数据

我们经常使用 url 来传一些参数,query 参数的典型格式是:page=0&pagesize=10&sort=-channel_id%2Cid 这样的。其中,包含中文和一些其他字符在内的,都会转码。因此,我们需要先解码,然后再进行转换。

此外,参数并不会每一次都在,因此又可能是传进来空字符串的情况,因此,还需要特殊处理。

我的代码是:

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 数据,或者为空,则会解析失败,返回一个空的字典。

url query 参数转字典型数据

如上效果所示。

sanic 框架有自己的 query 参数获取方法,request.args 方法就是用来取这个参数的。但是经过对比,还是我的方法比较靠谱。如果你自己在使用 sanic 框架,可以对比一下。

Python RSA 加密以及解密

非对称加密是目前比较常用的一种加密类型。RSA 是一种非常常用的非对称加密方法。其使用公钥加密,然后用私钥解密。这是非常安全的。

我们先将公钥和私钥存储为文本文件,放在项目中,然后我写了下面两个方法分别来实现加密和解密

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

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

本文由 FungLeo 原创,允许转载,但转载必须保留首发链接。

猜你喜欢

转载自blog.csdn.net/FungLeo/article/details/81390842
今日推荐