python画图程序实验报告_20184313 实验三《Python程序设计》实验报告

本实验通过创建服务端和客户端,利用Socket套接字进行通信,重点介绍了使用SM2非对称加密算法进行数据加密和解密的过程。实验中解决了加密长度不匹配等问题,并实现了仅通过公钥进行安全通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20184313 2019-2020-2 《Python程序设计》实验三报告

课程:《Python程序设计》

班级: 1843

姓名: 孙炜力

学号:20184313

实验教师:王志强

实验日期:2020年5月15日

必修/选修: 公选课

1.实验内容

创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。

2. 实验过程及结果

程序框架

1943277-20200523172350865-972583095.png

enc_send(message, sm2_crypt, s)函数

这个函数主要用于把massage信息用sm2_crypt的加密方法加密后再用s套接字进行发送。

当message传入的参数是bytes型变量时,直接进行加密;message传入的参数为字符串时,要先转换为bytes型变量再进行加密。

dec_recv(sm2_crypt, s, l)函数

这个函数主要用于从s接收加密数据,将其解密并返回解密结果。

这个函数主要功能就是从后序序列中找出相应的操作数和运算符,先取最后一位为运算符,然后根据运算符的种类判断操作数的个数,取最后的操作数,并调用JiSuan函数进行运算

3.实验过程中遇到的问题和解决过程

问题1:实验中由于SM2算法加密结果长度和明文长度不一致,因此之前在按明文长度接收时会产生接收不全的情况。

问题1解决方案:接收时最大接收长度设置稍长一些,普通消息设置为1024,明文设置为明文长度的二倍。

问题2:由于采用非对称密钥进行加密,所以发送方应只掌握收方公钥,但由于gmssl库中使用SM2类实现加解密,因此定义SM2类时必须传公钥和私钥,会造成私钥泄露。

问题2解决方案:在初始化SM2时不再假定使用同一个SM2类对象,而是只传输公钥给对方,在初始化加密SM2对象时默认私钥为空。

其他(感悟、思考等)

​通过这次实验,让我复习了上次作业使用的网络编程技术,虽然上次的彩蛋中也有使用国密算法进行加密的过程,但是通过这次的实验,让我对非对称密钥加密算法有了更加深入的了解。虽然上次也使用了SM2算法,但由于默认密钥已提前交换好,相当于把私钥传给了对方。在这次实验中,我重新思考了加解密双方的公私钥关系,只传输公钥,保护了各自的私钥。

​总之,这次实验让我重温了之前学到的一些编程思路,也让我对Python和公钥密码体系有了进一步的了解,可谓收获满满。

参考资料c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值