前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 常用代码段汇总(三) url query 参数转字典 rsa 加密解密

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

作者头像
FungLeo
发布2019-05-27 08:57:15
1.2K0
发布2019-05-27 08:57:15
举报

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 参数转字典型数据
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')

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • url query 参数转字典型数据
  • Python RSA 加密以及解密
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档