实验一报告
密码引擎的设计与实现
密码引擎-1-OpenEuler-OpenSSL编译
- 安装Ubuntu和OpenEuler虚拟机
- 下载最新的OpenSSL源码(1.1版本)
- 用自己的8位学号建立一个文件夹,cd 你的学号,用pwd获得绝对路径
- 参考https://www.cnblogs.com/rocedu/p/5087623.html先在Ubuntu中完成OpenSSL编译安装,然后在OpenEuler中重现
./config --prefix=..(学号目录的绝对路径)指定OpenSSL编译链接
-
提交 test_openssl.c 编译运行截图
-
加分项:在Windows中编译OpenSSL,记录编译过程,提交相关文档(推荐MarkDown格式)
成功安装Ubuntu和OpenEuler虚拟机


ubuntu用自己的8位学号建立一个文件夹,cd 你的学号,用pwd获得绝对路径

openeuler用自己的8位学号建立一个文件夹,cd 你的学号,用pwd获得绝对路径

在OpenEuler和ubuntu中完成OpenSSL编译安装
./config --prefix=..(学号目录的绝对路径)指定OpenSSL编译链接


test_openssl.c 编译运行截图

windows测试openssl

OpenSSL 使用 base64 编码/解码

密码引擎-2-电子钥匙功能测试
在Ubuntu中运行例程


.png)
初始化
.png)
运行“龙脉密码钥匙驱动实例工具等\mToken-GM3000\skf\samples\windows”中例程
.png)
.png)
.png)
密码引擎-3-加密API研究
密码引擎API的主要标准和规范包括:
1 微软的Crypto API
2 RAS公司的PKCS#11标准
3 中国商用密码标准:GMT 0016-2012 智能密码钥匙密码应用接口规范,GMT 0018-2012密码设备应用接口规范等
研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客链接和代码链接。
内容:
0 查找各种标准的原始文档,研究学习(至少包含Crypto API,PKCS#11,GMT 0016-2012,GMT 0018-2012)(5分)
1 总结这些API在编程中的使用方式(5分)
2 列出这些API包含的函数,进行分类,并总结它们的异同(10分)
3 以龙脉GM3000Key为例,写出调用不同接口的代码(Crypto API,PKCS#11,SKF接口),把运行截图加入博客,并提供代码链接(10分)
详见我的另一篇博客:https://www.cnblogs.com/moonyecho/p/17285617.html
密码引擎-4-国䀄算法交叉测试
0 2人一组,创建一个文件,文件名为小组成员学号,内容为小组成员学号和姓名
1 在Ubuntu中使用OpenSSL用SM4算法加密上述文件,然后用龙脉eKey解密,提交代码和运行结果截图
2 在Ubuntu中基于OpenSSL产生一对公私钥对(SM2算法)
3 在Ubuntu中使用OpenSSL用SM3算法计算上述文件的Hash值,然后用OpenSSL SM2算法计算Hash值的签名,用龙脉eKey进行验签,提交代码和运行结果截图
4 加分项:在Windows中重现上述过程
本小组为20201322与20201315
在Ubuntu中使用OpenSSL用SM4算法加密上述文件,然后用龙脉eKey解密

将原始的私钥文件,转换为pkcs8格式,利用原始的私钥,生成对应的公钥

openssl ecparam -out ec_param.pem -name SM2 -param_enc explicit -genkey生成完成后的EC私钥信息

在Ubuntu中使用OpenSSL用SM3算法计算上述文件的Hash值,然后用OpenSSL SM2算法计算Hash值的签名,用龙脉eKey进行验签

在windows下中使用OpenSSL用SM4算法加密上述文件

在Ubuntu中基于OpenSSL产生一对公私钥对(SM2算法)但应该是因为编码问题不能查看报错
.png)
SM3算法签名
.png)


浙公网安备 33010602011771号