专栏首页地方网络工作室的专栏python 常用代码段汇总(三) url query 参数转字典 rsa 加密解密

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本

    Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本 在 mac 或者 linux 系统中,我们的浏览器或者其他下载软件下载的文件全...

    FungLeo
  • 打造前端 Deepin Linux 工作环境——安装 nodejs 环境,git 版本管理

    打造前端 Deepin Linux 工作环境——安装 nodejs 环境,git 版本管理 好的,前面我们已经对系统进行了基本的设置,然后我们从这一篇博文开始,...

    FungLeo
  • git 统计项目各个开发人员开发情况工具 git-fame 的使用

    版权声明:本文为 FengCms FungLeo 原创文章,允许转载,但转载必须注明出处并附带首发链接 ...

    FungLeo
  • Python绘制带有中文标签和图例的图

    本文属于科学计算与可视化范畴,要点在于扩展库numpy、pylab、matplotlib的用法。 import numpy as np import pylab...

    Python小屋屋主
  • EOSIO 转帐详解

    在EOS网络中存在两种货币,一种是EOS,还有一种是EOS网络中的代币。说到这里大家似乎有点疑惑,举个简单的例子,就好比ETH网络中的ETH,ETH网络中的其他...

    EOS中文社区
  • 机器学习中导数最优化方法(基础篇)

    1. 前言 熟悉机器学习的童鞋都知道,优化方法是其中一个非常重要的话题,最常见的情形就是利用目标函数的导数通过多次迭代来求解无约束最优化问题。实现简单,codi...

    IT派
  • 从零开始学Python【32】--KNN分类回归模型(理论部分)

    KNN算法属于有监督的学习算法,它的中文名称为K最近邻算法,同样是十大挖掘算法之一。它与很多其他的监督算法不同,属于“惰性”学习算法,即不会预先生成一个分类或预...

    1480
  • 有效的python属性管理:描述符的使用

    專 欄 ❈Pytlab,Python中文社区专栏作者。主要从事科学计算与高性能计算领域的应用,主要语言为Python,C,C++。熟悉数值算法(最优化方法,蒙...

    Python中文社区
  • 选择Kong作为你的API网关

    在微服务架构之下,服务被拆的非常零散,降低了耦合度的同时也给服务的统一管理增加了难度。如上图左所示,在旧的服务治理体系之下,鉴权,限流,日志,监控等通用功能需要...

    kirito-moe
  • 通俗易懂,从函数 def 到类 Class

    摘要:初学 Python 过程中,我们可能习惯了使用函数(def),在开始学习类(Class)的用法时,可能会觉得它的写法别扭,类的代码写法也不像函数那么简单直...

    周萝卜

扫码关注云+社区

领取腾讯云代金券