原创

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://fungleo.blog.csdn.net/article/details/81390842

最近一直在写一套基于 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 原创,允许转载,但转载必须保留首发链接。

文章最后发布于: 2018-08-03 16:57:26
展开阅读全文
0 个人打赏
私信求帮助
曾参与过风云系列卫星、碳卫星、子午工程、嫦娥等项目的数据处理工作;有超10年大型项目的开发经验。 专栏收入了作者为Python爱好者精心打造的多篇文章,从小白入门学习的基础语法、基础模块精讲等内容外,还提出了“Python语感训练”的概念和方法,不仅为初学者提供了进阶之路,有一定基础的程序员亦可从中受益。后续,本专栏还将加入2D/3D应用开发、数据处理、实战项目等精品内容,敬请期待。
xufive ¥3.80 1554人订阅

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览