自适应安全报文工具课设——个人报告

20191309刘嘉祺

个人贡献

(1)分工和整体调度
(2)将其改写成C代码并在Virtual Studio上跑通;
(3)把算法换成国密算法(sm4);
(4)将代码移植到openeuler虚拟机上;
(5)密钥协商编写。

设计中遇到的问题及解决方法

(1)JAVA属于面向对象语言,C是面向过程语言。加解密部分JAVA可以直接调用,C要自己写。
(2)不同系统的兼容性
最开始我准备调用API来实现加密,但windows API和openeuler下使用openssl API并不兼容。
解决方式:单独一个C文件写入了sm4的加解密算法,替代API用于调用。这样可以省去将代码移植到openeuler虚拟机上这一步。
(3)已经成功实现了明文的文件读写。但不知道怎么进行密文的文件读写。我尝试过直接将密文作为字符或16进制数写入文件,结果都与直接打印的结果不同,读取也不能正确读取。(未解决)

c)调试过程中遇到的主要问题,并说明解决方法

(1)现是通过参数形式输入明文密文。发送方生成的密文需要复制来作为收信方的参数。
解决方法:可以将参数改为从文件中读取。
(2)不支持对特殊字符加密。
(3)虚拟机内存不够,需要扩盘。
(4)若密钥协商过程或最终密钥出现生成的数首位为0,可能会隐去。
解决方法:写入时通过"%x016"补足位数。

设计体会及收获

这是我头一次将程序改写成另一种语言,是一个不小的挑战。尤其是我的JAVA底子并不好,改写有些小困难。相较于常用的API调用,由于系统的差异性,我在改写时选择独立一个sm4算法文件用于调度,所以需要额外学习制作新的接口,但最终结果是好的,收获良多。课设过程中,首先就是对于面向对象和面向过程语言的差距有了直接的体验;第二对于加密算法原理有了进一步的学习;第三,团队合作更顺利。最终验收时发现少了密钥协商的功能,临时加上,现学了qt相关内容。qt的语言比较机械化,逻辑简单,上手很快。

参考资料

https://download.csdn.net/download/terry006/5117218?spm=1001.2014.3001.5503
https://www.cnblogs.com/qingergege/p/9600711.html
https://blog.csdn.net/qq_18572023/article/details/118723839
https://www.runoob.com/
https://www.cnblogs.com/mao0504/p/6188111.html
https://blog.csdn.net/weixin_42186805/article/details/96883146
https://blog.csdn.net/justinzengTM/article/details/103554470
https://blog.csdn.net/weixin_30312659/article/details/98929772

posted @ 2022-01-06 14:18  20191309刘嘉祺  阅读(22)  评论(0编辑  收藏  举报