C/S 架构的加密通信库 Python-SecureHTTP

MIT
Python
跨平台
2019-01-18
SaintIC

说在前面:

    在HTTP协议中,传输数据是明文,被第三方截获后很容易看出数据,所以现在主流建议是HTTPS加密传输,如Chrome,新版本用HTTP会提示不安全。

    除此之外,我们也可以约定一种或多种加密算法对传输的数据在客户端加密、服务端解密,并且使用签名,这样第三方截获,也无法获取数据明文,且防篡改,大大增加传输安全性。

 

软件内容:

    通过使用RSA+AES让HTTP传输更加安全,即C/S架构的加密通信!

加密算法:

    Python-SecureHTTP使用的加密算法相关如下,使用相同标准,其他语言如Java、PHP、Go、JS等均可通信。

    1. AES加解密::

        模式:CBC

        密钥长度:128位

        密钥key和初始偏移向量iv一致

        补码方式:PKCS5Padding

        加密结果编码方式:十六进制

    2. RSA加解密::

        算法:RSA

        填充:RSA_PKCS1_PADDING

        密钥格式:符合PKCS#1规范,密钥对采用PEM形式

    3. 签名::

        对请求参数或数据添加公共参数后排序再使用MD5签名。

    更多了解可以参考https://www.jianshu.com/p/b092b4fac27c,上面包的实现逻辑参考此文。

 

安装使用:

    1. 安装:pip install Python-SecureHTTP

    2. 逻辑:

    客户端上传数据加密 ==> 服务端获取数据解密 ==> 服务端返回数据加密 ==> 客户端获取数据解密

    NO.1 客户端上传数据加密流程::

        1. 客户端随机产生一个16位的字符串,用以之后AES加密的秘钥,AESKey。
        2. 使用RSA对AESKey进行公钥加密,RSAKey。
        3. 参数加签,规则是:对所有请求或提交的字典参数按key做升序排列并用"参数名=参数值&"形式连接。
        4. 将明文的要上传的数据包(字典/Map)转为Json字符串,使用AESKey加密,得到JsonAESEncryptedData。
        5. 封装为{key : RSAKey, value : JsonAESEncryptedData}的字典上传服务器,服务器只需要通过key和value,然后解析,获取数据即可。

    NO.2 服务端获取数据解密流程::

        1. 获取到RSAKey后用服务器私钥解密,获取到AESKey
        2. 获取到JsonAESEncriptedData,使用AESKey解密,得到明文的客户端上传上来的数据。
        3. 验签
        4. 返回明文数据

    NO.3 服务端返回数据加密流程::

        1. 将要返回给客户端的数据(字典/Map)进行加签并将签名附属到数据中
        2. 上一步得到的数据转成Json字符串,用AESKey加密处理,记为AESEncryptedResponseData
        3. 封装数据{data : AESEncryptedResponseData}的形式返回给客户端

    NO.4 客户端获取数据解密流程::

        1. 客户端获取到数据后通过key为data得到服务器返回的已经加密的数据AESEncryptedResponseData
        2. 对AESEncryptedResponseData使用AESKey进行解密,得到明文服务器返回的数据。

    3. 调用:

        Python-SecureHTTP提供两个核心类,EncryptedCommunicationClient(针对逻辑NO.1、NO.4)和EncryptedCommunicationServer(针对逻辑NO.2、NO.3)。

    4. 核心类说明:

        4.1 EncryptedCommunicationClient:客户端加密通信类,提供clientEncrypt(NO.1加密)、clientDecrypt(NO4解密)两个方法。

        4.2 EncryptedCommunicationServer:服务端加密通信类,提供serverDecrypt(NO.2解密)、serverEncrypt(NO.3加密)两个方法。

        4.3 更多API文档,请访问https://python-securehttp.readthedocs.io/#api-documentation

 

示例代码:

    1. 不同语言的AES加密的示例:https://gitee.com/staugur/Python-SecureHTTP/tree/master/examples/AES-CBC-PKCS5Padding

    2. 不同语言的RSA加密的示例:https://gitee.com/staugur/Python-SecureHTTP/tree/master/examples/RSA-PKCS1-PEM

    3. 不同语言的MD5签名的示例:还没有找

    4. 不同语言的HMAC-SHA256的示例(暂时没用此算法作签名):https://gitee.com/staugur/Python-SecureHTTP/tree/master/examples/HMAC-SHA256

    5. B/S示例:https://gitee.com/staugur/Python-SecureHTTP/tree/master/examples/BS-RSA

 

说在后面:

    !欢迎提交PR、Issue

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Python 学习线路图

Python 学习线路图 PyCharm教程 Pycharm介绍 Pycharm安装 Pycharm了解基础知识 Pycharm 快捷键 Pycharm快捷方式 Pycharm Omni Pycharm Macros Pycharm Micros Pycharm改进和编写代码 Pychar...

2018/10/10 17:33
133
1
python 语言

Python 学习资料汇总

2014/10/25 11:28
97
0
Python天天美味(总)

Python Eat me! Python天天美味,每天一口,乐在其中,悠哉,悠哉~~ - CoderZh Python 天天美味(1) - 交换变量 Python 天天美味(2) - 字符遍历的艺术 Python 天天美味(3) - 字符转换 Python...

2014/07/28 11:32
21
0
Python: Monitoring a Directory

Basic mtime + checksum + directory traversal Code #!/usr/bin/env python ''' monitor a directory print the changed files in the directory strategy: mtime + checksum ''' import ...

2012/08/30 12:44
120
0
Python经典资料汇总80个下载目录-Python典藏

Python经典资料汇总80个下载目录-Python典藏 80个Python资料,分享给Python开发的同学。内容包括1个Python专题、66个学习资料、7套Python源码和6个相关软件。附件较多,无法一一分享,在此大...

2015/05/30 00:06
134
1
教为学:python学习之路(一):python源码安装

教为学:python学习之路(一):python源码安装 前言 Python是一门万金油语言,特别在Linux下。一般的Linux系统也自带Python。不过,我们依旧有必要学习怎么在Linux下安装Python。 操作系统的...

2014/09/02 11:42
12
0
Win10下python3和python2多版本同时安装并解决pip共存问题

Win10下python3和python2多版本同时安装并解决pip共存问题 特别说明,本文是在Windows64位系统下进行的,32位系统请下载相应版本的安装包,安装方法类似。 使用python开发,环境有Python2和 ...

2018/12/23 11:58
47
0
Debian9.2中将默认的Python2为系统的python3

Debian9.2中将默认的python2,但现在用python3,把系统默认的python改为python3: 1.查看系统默认的python应用程序: root@debian92:/usr/bin# ls -la python lrwxrwxrwx 1 root root 9 1月 24...

2017/10/31 11:56
25
0
80个Python经典资料(教程+源码+工具)汇总——下载目录

大家好,51CTO下载中心根据资料的热度和好评度收集了80个Python资料,分享给Python开发的同学。内容包括1个Python专题、66个学习资料、7套Python源码和6个相关软件。附件较多,无法一一分享,...

2012/07/02 10:53
1K
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部