资源简介
最近打算使用 python3 写一个图形化的聊天室,需要涉及到 RSA 加密模块,使用的是 python 自带的 RSA 加密模块。主要功能: 1. 作为聊天室服务器登录
2. 作为聊天室客户端登录
3. 客户端链接服务器IP
4. 客户端1与服务器进行验证
5. 客户端2与服务器进行验证
6. 客户端1加密消息并发送
7. 服务器解密消息并转发到客户端2
8. 客户端2发送消息同客户端1
代码片段和文件信息
#!/usr/bin/env python3
# 导入cryptography库的相关模块和函数
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import padding
# 定义辅助函数,用于打印16进制数据
def dump_hex(buffer sep=‘ ‘ indent=0 line_size=16):
“““
辅助函数,将bytes数组以如下格式打印输出:
0000: 40 71 37 d0 80 32 7f 04 d9 6d fb fc f7 6a 7d d4
0010: 48 ad 75 79 7a 0d 6c 55 01 ed 45 d5 1e 75 33 a6
:param buffer: 待打印数据
:param sep: 各16进制数据之间的分隔符,默认用空格‘ ‘分隔
:param indent: 打印输出前是否需要缩进,默认不缩进
:param line_size: 每行输出16进制的数量,默认1行输出16个
:return: 无返回值
“““
# 计算缩进空格数
leading = ‘%s‘ % ‘ ‘*indent
# 循环打印每行16进制数据
for x in range(0 len(buffer) line_size):
# 打印缩进字符和当前行数据的起始地址
print(‘%s%04X: ‘ % (leading x) end=‘‘)
# 将当前行数据制作成列表list,并打印
line = [‘%02x‘ % i for i in buffer[x:x+line_size]]
print(*line sep=sep end=‘\n‘)
# 加密函数
def encrypt(src_file_name dst_file_name public_key_file_name):
“““
对原始数据文件使用指定的公钥进行加密,并将加密输出到目标文件中
:param src_file_name: 原始数据文件
:param dst_file_name: 加密输出文件
:param public_key_file_name: 用于加密的公钥
:return: 加密结果的bytes数组
“““
# 读取原始数据
data_file = open(src_file_name ‘rb‘)
data = data_file.read()
data_file.close()
# 读取公钥数据
key_file = open(public_key_file_name ‘rb‘)
key_data = key_file.read()
key_file.close()
# 从公钥数据中加载公钥
public_key = serialization.load_pem_public_key(
key_data
backend=default_backend()
)
# 使用公钥对原始数据进行加密,使用PKCS#1 v1.5的填充方式
out_data = public_key.encrypt(
data
padding.PKCS1v15()
)
# 将加密结果输出到目标文件中
# write encrypted data
out_data_file = open(dst_file_name ‘wb‘)
out_data_file.write(out_data)
out_data_file.close()
# 返回加密结果
return out_data
# 解密函数
def decrypt(src_file_name dst_file_name private_key_file_name):
“““
对原始数据文件使用指定的私钥进行解密,并将结果输出到目标文件中
:param src_file_name: 原始数据文件
:param dst_file_name: 解密输出文件
:param private_key_file_name: 用于解密的私钥
:return: 解密结果的bytes数组
“““
# 读取原始数据
data_file = open(src_file_name ‘rb‘)
data = data_file.read()
data_file.close()
# 读取私钥数据
key_file = open(private_key_file_name ‘rb‘)
key_data = key_file.read()
key_file.close()
# 从私钥数据中加载私钥
private_key = serialization.load_pem_private_key(
key_data
password=None
backend=default_backend()
)
# 使用私钥对数据进行解密,使用PKCS#1 v1.5的填充方式
out_data = private_key.decrypt(
data
padding.PKCS1v15()
)
# 将解密结果输出到目标文件中
out_data_file = open(dst_file_name ‘wb‘)
out_data_file.write(out_data)
out_data_file.close()
# 返回解密结果
return out_data
if __name__ == “__main__“:
#data_file_name = r‘msg.bin‘
data_file_name = r‘msg.txt‘
encrypted_file_name = r‘msg.bin.encrypted‘
decrypted_file_name = r‘msg.bin.decrypted‘
private_key_file_name = r
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 67646 2018-03-11 20:04 python3 + wxpython 实现RSA加密聊天室\ico.ico
文件 4239 2018-05-16 09:55 python3 + wxpython 实现RSA加密聊天室\rsa-enc-dec.py
文件 160756 2018-05-16 14:07 python3 + wxpython 实现RSA加密聊天室\抓包.pcapng
文件 10547 2018-05-16 12:59 python3 + wxpython 实现RSA加密聊天室\聊天室-Python27.py
文件 11918 2018-05-16 12:52 python3 + wxpython 实现RSA加密聊天室\聊天室-Python36.py
文件 13778675 2018-05-16 14:12 python3 + wxpython 实现RSA加密聊天室\聊天室工具 x86_x64.exe
文件 17122 2018-08-02 17:35 python3 + wxpython 实现RSA加密聊天室\聊天室工具.py
目录 0 2018-08-02 17:36 python3 + wxpython 实现RSA加密聊天室
----------- --------- ---------- ----- ----
14050903 8
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论