基于密码算法库的国密算法支持研究与应用
小组成员:
20201230张国强
20201206韩进
20201214罗云帆
20201216徐嘉骏
指导教师:娄嘉鹏
提交时间:2022年12月10日
一、设计方案及可行性分析
1. 任务内容
本次课题设计重在对国密算法库的查找以及对库内国密算法的调用。不同的编程语言目前其算法库内的加密算法种类不同,其调用也存在不小差异。故在后期实现各类加密系统时必不可少要调用对应编程语言的加密算法库,此次课设内容的学习对于以后的软件开发既是强大的地基,又是软件安全的强大保障。
2. 任务要求
尽可能多地查找编程语言对应的密码算法库,理解与掌握其内部算法包装接口,设计调用程序对其接口进行调用测试。在完成基本语言C、JAVA、Python对应的算法库搜集以及调用测试后,尝试寻找支持国密算法的其他编程语言并实现调用。
二、详细设计思路
1. 密码库查找与接口学习
罗云帆,徐嘉骏尽可能多地查找各类编程语言的密码算法库资料;韩进、张国强(组长)对查到的资料进行整理研究;
首先我们对国密算法原理以及种类进行了深入了解,为后续对算法库的查找奠定一定的基础;
图1 基础实现调用的国密算法
图2 国密算法分类
之后我们通过在github、gitee上对密码库查询并搜索其所有版本,为找到支持国密算法的接口。通过其库说明README文件以及其内部的demo测试程序源代码和国密算法实现源代码学习其接口的使用。如下图:
2. 调用程序编写
通过对库接口的学习,我们小组分工完成各库国密算法接口的调用程序并通过代码托管平台将代码托管:
目录结构举例如下:
3. 安装并调用密码库完成测试
- 密码库安装
通过github或gitee内查找对应的库,将其工作目录利用git clone在本地,再通过其README文件提供的安装步骤进行源码配置安装。根据自己的系统环境进行简单的修改即可利用makefile生成对应的动态libxx.so库以及静态libxx.a库。如:
- C库调用
这类库利用gcc编译选项,编译源程序时生成可执行程序实现调用。如:
- JAVA及Python库调用
这一类库为操作方便,采用IDE导包的方式完成调用:
4. 验证测试
我们对调用结果进行了测试与验证:
三、源代码及注释
具体调用过程结果及代码见小组项目链接:
project: 各种编程语言的密码库 (gitee.com)
四、个人报告
20201230张国强:https://www.cnblogs.com/RookieHacker1230/p/16971391.html
20201206韩进:https://www.cnblogs.com/han-jin/p/16971309.html
20201214罗云帆:
20201216徐嘉骏:https://www.cnblogs.com/zhilan/p/16971427.html