最近一直在写一套基于 python
的 sanic
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
数据,或者为空,则会解析失败,返回一个空的字典。
如上效果所示。
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 原创,允许转载,但转载必须保留首发链接。