课程设计个人报告
课程设计个人报告
1.个人贡献:
QT UI界面制作、项目最终测试、团队报告等内容撰写;
2.设计中遇到的问题及解决方法
设计过程中遇到的最大问题在于Java代码到C语言代码的改写过程,Java作为面向对象的设计语言,具有较高的集成度,许多操作都具有相应的库以便调用,而C语言作为面向过程的语言,更加注重细节,不能像Java一样有这么多方便调用的函数,许多操作不能一一对应。在经过多次的功能调整之后,对原Java代码实现功能进行了一定程度的简化,最终成功实现整个功能;
3.调试过程中遇到的主要问题,并说明解决方法
首先是对于VS stduio以及qt的重新学习过程,对于项目的调试都是在这两个程序上进行的,因此对于两个程序的基本操作需要进行简单的学习。
其次,VS studio 的项目编译运行过程中出现报错,原因在于发送方程序和接收方程序与头文件等相关文件不能同时存在于同一项目中,因为同时存在两个main函数无法正常运行,只有注释掉其中一个才可以正常运行(或者开两个项目,为发送方与接收方代码分别建立配套的头文件等)。
还有关于DH算法密钥协商的问题,开始并没有考虑到这一点,在SM4算法中直接内置了相同的密钥,这就导致密钥成为了公钥,发送方与接收方都能知道加密的密钥是什么,很容易泄露,而使用DH算法进行密钥协商之后,发送方与接收方各自有自己的私钥,并且不经过传输过程,可以较好地实现信息保护过程。
最后,在QT的运行过程中,出现了按钮表现与实际情况不符的情况,判断为C++语言对应状态改写步骤出现问题,经过修改后解决。
4.设计体会及收获
本次实验过程的难点在于配合证书进行相关明文的加解密、签名验签过程,在删减证书的使用后则将难度下降了,单纯实现了使用算法进行加解密并在QT过程中结合SOCKET完成加解密信息的通信过程。然而在这之后老师又提出了将对加密密钥的要求,我们最终选用了DH算法进行密钥协商来确保SM4加解密用密钥的安全性,对DH算法也有了更加深刻的认识。经过整个项目的实现之后,我对于安全报文工具这一项目有了一个整体性的认识,对于所涉及到的国密算法也加深了理解,虽然因为时间问题最终没有实现预先安排的有关KEY的任务,但整体来说收获很大,对个人能力的提升也是一种锻炼。
5.参考资料
https://www.bilibili.com/video/BV18W411Q7hC
https://www.bilibili.com/video/BV1ms411s7Kk?p=2
https://github.com/liuqun/gmalg/tree/master/utils/sm4