首页 > 其他分享 >sdf 测试-2-openssl

sdf 测试-2-openssl

时间:2024-05-20 09:30:16浏览次数:15  
标签:学号 SM3 sdf openssl char SDF 测试 printf hDeviceHandle

sdf 测试-2-openssl 任务详情

在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容 和AI要给出详细过程,否则不得分。
0.   根据gmt0018标准,如何调用接口实现基于SM3求你的学号姓名的SM3值?(5‘)
1. 使用OpenSSL实现SDF接口中的hash运算接口,至少支持SM3算法,把相关函数集成到src中的sdf.c中中(5')
3. 在test中的main.c调用进行测试,至少测试计算你的学号(数字),你的学号(字符串)的SM3值。(5‘)
4.  **提交代码(或代码链接)和运行结果截图**

根据 GMT 0018 标准,实现基于 SM3 求学号和姓名的 SM3 值需要以下步骤:

1. 初始化设备和会话。
2. 导入学号和姓名数据。
3. 调用 SM3 接口计算学号和姓名的 SM3 值。
4. 关闭会话和设备。

以下是一个简单的示例代码,演示了如何调用接口实现这些步骤:

```c
#include "sdf.h"
#include <stdio.h>
#include <string.h>

// 假设 SDF 接口中有一个函数用于计算 SM3 值,函数签名为:
// int SDF_CalculateSM3(void *hSessionHandle, const unsigned char *pData, unsigned int uiDataLen, unsigned char *pDigest);

// 定义学号和姓名
const char *studentID = "YourStudentID"; // 替换为你的学号
const char *name = "YourName"; // 替换为你的姓名

int main() {
void *hDeviceHandle = NULL;
void *hSessionHandle = NULL;
unsigned char sm3Digest[32]; // SM3 值为 256 位,即 32 字节

// 打开设备
if (SDF_OpenDevice(&hDeviceHandle) != SDR_OK) {
printf("Failed to open device.\n");
return -1;
}

// 打开会话
if (SDF_OpenSession(hDeviceHandle, &hSessionHandle) != SDR_OK) {
printf("Failed to open session.\n");
SDF_CloseDevice(hDeviceHandle);
return -1;
}

// 合并学号和姓名数据
char data[strlen(studentID) + strlen(name) + 1]; // +1 用于存储字符串结束符 '\0'
sprintf(data, "%s%s", studentID, name);

// 计算 SM3 值
if (SDF_CalculateSM3(hSessionHandle, (unsigned char *)data, strlen(data), sm3Digest) != SDR_OK) {
printf("Failed to calculate SM3 value.\n");
SDF_CloseSession(hSessionHandle);
SDF_CloseDevice(hDeviceHandle);
return -1;
}

// 打印 SM3 值
printf("SM3 Digest for Student ID and Name:\n");
for (int i = 0; i < 32; ++i) {
printf("%02X", sm3Digest[i]); // 以十六进制格式打印
}
printf("\n");

// 关闭会话和设备
SDF_CloseSession(hSessionHandle);
SDF_CloseDevice(hDeviceHandle);

return 0;
}
```

标签:学号,SM3,sdf,openssl,char,SDF,测试,printf,hDeviceHandle
From: https://www.cnblogs.com/sjd-sr/p/18201232

相关文章

  • sdf 测试-1-龙脉智能钥匙
    在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容和AI要给出详细过程,否则不得分。0.根据gmt0018标准,推导sdf的接口调用模式,比如调用SDF_GenerateRandom,还应调用其他什么函数,调用顺序是什么,给出结论和推导过程。(10‘)使用龙脉智能钥匙定义一个私有函数......
  • sdf 测试-1
    在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容和AI要给出详细过程,否则不得分。根据gmt0018标准,推导sdf的接口调用模式,比如调用SDF_GenerateRandom,还应调用其他什么函数,调用顺序是什么,给出结论和推导过程。(10‘)使用龙脉智能钥匙定义一个私有函数stati......
  • sdf 测试-1-龙脉智能钥匙
    sdf测试-1-龙脉智能钥匙任务详情在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容和AI要给出详细过程,否则不得分。0.根据gmt0018标准,推导sdf的接口调用模式,比如调用SDF_GenerateRandom,还应调用其他什么函数,调用顺序是什么,给出结论和推导过程。(1......
  • 5月20测试1
    根据gmt0018标准,推导sdf的接口调用模式,比如调用SDF_GenerateRandom,还应调用其他什么函数,调用顺序是什么,给出结论和推导过程。(10‘)使用龙脉智能钥匙定义一个私有函数staticintgetRandom(char*r,intlength),获取length个字节的随机数(5‘)把上述函数集成到src中的sdf.c......
  • sdf 测试-1-龙脉智能钥匙
    目录根据gmt0018标准,推导sdf的接口调用模式,比如调用SDF_GenerateRandom,还应调用其他什么函数,调用顺序是什么,给出结论和推导过程。(10‘)具体要求代码截图:main.csdf.hsdf.c运行截图具体代码ifndef_SDF_Hdefine_SDF_HdefineSDF_OK0x0//操作成功defineSDR_BASE0x01000000//......
  • 20211128—sdf 测试-1-龙脉智能钥匙
    SDF_OpenDevice:连接到设备并打开设备句柄。SDF_Initialize:初始化设备。SDF_CreateApplication:创建应用程序。SDF_SelectApplication:选择应用程序。然后,您可以调用SDF_GenerateRandom函数来生成随机数。调用顺序如下所示:SDF_OpenDeviceSDF_InitializeSDF_CreateApplicationSDF_Sel......
  • 5/19/2024 测试
    总结P都不是,(本人)成绩构思依托(10pts)。有重题,而且是同一场比赛出现两道一模一样的题(T1&&T4)题目&题解T1ColorDescription有\(n\)个球排成一列,每个球都有一个颜色,用\(A\simZ\)的大写字母来表示,我们每次随机选出两个球\(b_1,b_2\),使得后者染上前者的颜色,求期望......
  • 测试
    点击查看代码<scriptsrc="https://guangzan.gitee.io/awescnb/index.js"></script><script>constopts={theme:{name:'geek',url:"https://acnblogs.gitee.io/acnb-theme-geek/index.iife.js",......
  • stm32f103c8t6使用bootloader进行ymodem下载和app程序测试,部分总结(暂未测试中断向量偏
    bootloader程序部分(功能测试)print_boot_message();/*USERCODEEND2*//*Infiniteloop*//*USERCODEBEGINWHILE*/uint8_tkey_get_state;while(1){/*USERCODEENDWHILE*//*USERCODEBEGIN3*/key_get_state=g......
  • 国密算法测试
    点击查看代码#!/usr/bin/python#encoding:utf-8importtimeimportbase64fromgmsslimportsm2,sm4importcodecsSM2_PRIVATE_KEY='00B9AB0B828FF68872F21A837FC303668428DEA11DCD1B24429D0C99E24EED83D5'SM2_PUBLIC_KEY='B9C9A6E04E9C91F7BA880429......