学习
实践
活动
工具
TVP
写文章

Python-SecureHTTP:基于RSA+AES的加密通信的代码实现

说在前面:

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

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

本篇内容:

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

此功能实现介绍的是Python-SecureHTTP,开源地址是:https://github.com/staugur/Python-SecureHTTP,文档地址是:https://python-securehttp.readthedocs.io

加密算法:

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. 安装:

2. 逻辑:

3. 调用:

Python-SecureHTTP提供两个核心类,(针对逻辑NO.1、NO.4)和(针对逻辑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://github.com/staugur/Python-SecureHTTP/tree/master/examples/AES-CBC-PKCS5Padding

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

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

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

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

说在后面:

1. 增加B/S示例

2. 增加多语言

3. 增加签名算法

!欢迎提交PR、Issue

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190124G0C6TQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券