✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆
🔥系列专栏 :
📃新人博主 :欢迎点赞收藏关注,会回访!
💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少努力,撑得累不累,摔得痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷。
文章目录
- 一、设计要求
- 二、开发环境与工具
- 三、设计原理
- 1. SM2
- 加密过程:
- 解密过程:
- 原理:
- 2. SM3
- 3. SM4
- S盒
- 非线性变换τ
- 线性变换部件L
- 合成变换T
- 加密算法
- **解密算法**
- 四、系统功能描述及软件模块划分
- 1 function.py 模块的划分
- 2 SM2.py模块的划分
- 3 SM3.py模块划分
- 4 SM4.py模块的划分
- 五、设计步骤
- 1. SM2
- 默认参数
- 加密流程
- 解密流程
- 签名:
- 验签
- 2. SM3
- 3. SM4
- 非线性变换τ
- 线性变换部件L
- 合成变换T
- 加密算法
- **解密算法**
- 六、关键问题及其解决方法
- ECB
- CBC
- CFB
- OFB
- SM3数据填充
- 七、设计结果
- 八、软件使用说明
- 九、参考资料
- 十、验收时间及验收情况
- 十一、设计体会
一、设计要求
实现国密算法, SM2, SM3, SM4。
数据类型为文本、图片、音频
二、开发环境与工具
编辑工具:Visual Studio Code
编译工具:python 3.9.7
界面工具:PyQt5 designer
用到的库:math; Random; gmssl; PyQt5 5.15.4;
三、设计原理
1. SM2
加密过程:
设需要发送的消息为比特串 M ,klen 为 M 的比特长度。
为了对明文 M 进行加密,作为加密者的用户 A 应实现以下运算步骤:
A1:用随机数发生器产生随机数;
A2:计算椭圆曲线点 ,([k]G 表示 k*G )将C1的数据类型转换为比特串;
A