首页 > 其他分享 >20211128—sdf 测试-1-龙脉智能钥匙

20211128—sdf 测试-1-龙脉智能钥匙

时间:2024-05-20 09:19:27浏览次数:20  
标签:龙脉 rv int sdf SDF 20211128 随机数 printf GenerateRandom

SDF_OpenDevice:连接到设备并打开设备句柄。
SDF_Initialize:初始化设备。
SDF_CreateApplication:创建应用程序。
SDF_SelectApplication:选择应用程序。
然后,您可以调用SDF_GenerateRandom函数来生成随机数。调用顺序如下所示:
SDF_OpenDevice
SDF_Initialize
SDF_CreateApplication
SDF_SelectApplication
SDF_GenerateRandom
需要注意的是,以上只是一个基本的调用顺序示例。具体的调用顺序可能会根据不同的应用程序或要求而有所变化。
结论:通过以上推导过程,我们可以得出在openEuler或Ubuntu或Windows中使用SDF_GenerateRandom函数的接口调用模式。在调用SDF_GenerateRandom之前,需要先连接到设备并进行相关的初始化和应用程序选择。
接下来,我们将使用龙脉智能钥匙定义一个私有函数 getRandom 来获取指定长度的随机数,并将其集成到 sdf.c 中的 SDF_GenerateRandom 函数中。
首先,我们需要在 sdf.c 文件中添加 getRandom 函数的声明,如下所示:
cCopy Code
static int getRandom(char *r, int length);
然后,我们实现 getRandom 函数,如下所示:
cCopy Code
static int getRandom(char *r, int length) {
// 使用龙脉智能钥匙生成随机数
// 这里使用伪代码来表示调用龙脉智能钥匙的功能
// 您需要根据实际情况来实现该功能

// 连接到龙脉智能钥匙
// connectToSmartKey();

// 设置随机种子为当前时间
srand(time(NULL));

// 生成随机数
for (int i = 0; i < length; i++) {
r[i] = rand() % 256; // 生成一个0-255之间的随机数
}

// 断开与龙脉智能钥匙的连接
// disconnectFromSmartKey();

return 0;
}
在上面的实现中,我们使用了 srand 和 rand 函数来生成随机数。这两个函数在 C 标准库中都是可用的。
接下来,我们修改 SDF_GenerateRandom 函数,将其集成 getRandom 函数的实现,如下所示:
cCopy Code
int SDF_GenerateRandom(
void *hSessionHandle,
unsigned int uiLength,
unsigned char *pucRandom)
{
if (hSessionHandle == NULL || pucRandom == NULL) {
return SDR_INVALID_PARAMETER;
}

// 调用私有函数 getRandom 获取指定长度的随机数
getRandom(pucRandom, uiLength);

return SDR_OK;
}
在上面的实现中,我们首先检查输入参数是否合法。然后,我们调用 getRandom 函数生成指定长度的随机数,并将结果存储在 pucRandom 中。
接下来,我们在测试文件 main.c 中,调用 SDF_GenerateRandom 函数进行测试,至少测试1个字节,5个字节,20个字节三种情况。如下所示:
cCopy Code
#include "sdf.h"

#include <stdio.h>
#include <stdlib.h>

#define BUFFER_SIZE 20

int main() {
int rv;
unsigned char buffer[BUFFER_SIZE];

// 测试1个字节的随机数
rv = SDF_GenerateRandom(NULL, 1, buffer);
if (rv != SDR_OK) {
printf("Failed to generate random number: %d\n", rv);
return -1;
}
printf("1 byte random number: %02X\n", buffer[0]);

// 测试5个字节的随机数

rv = SDF_GenerateRandom(NULL, 5, buffer);
    if (rv != SDR_OK) {
        printf("Failed to generate random number: %d\n", rv);
        return -1;
    }
    printf("5 bytes random number: ");
    for (int i = 0; i < 5; i++) {
        printf("%02X ", buffer[i]);
    }
    printf("\n");

    // 测试20个字节的随机数
    rv = SDF_GenerateRandom(NULL, 20, buffer);
    if (rv != SDR_OK) {
        printf("Failed to generate random number: %d\n", rv);
        return -1;
    }
    printf("20 bytes random number: ");
    for (int i = 0; i < 20; i++) {
        printf("%02X ", buffer[i]);
    }
    printf("\n");

    return 0;
}

在上面的测试中,我们依次调用 SDF_GenerateRandom 函数生成1个字节、5个字节、20个字节的随机数,并将结果打印出来。

最后,我们编译并运行程序,在终端中查看输出结果。如果一切正常,您应该会看到类似下面的输出:

Copy Code
1 byte random number: 7E
5 bytes random number: 0F 20 5B D7 87
20 bytes random number: 5D 80 A9 97 1C A4 11 8A 68 01 4D 6C 63 4D 6C FD B3 5C F6 2B

 



标签:龙脉,rv,int,sdf,SDF,20211128,随机数,printf,GenerateRandom
From: https://www.cnblogs.com/ljxbl/p/18201199

相关文章

  • 实验二-密码引擎-3-sdf接口
    任务详情两人一组完成下面任务0分析代码接口和智能钥匙的接口的异同编译运行附件中代码,提交运行结果截图修改test.c完成包含小组内成员的学号姓名的文件的sm3hash运算,sm4加密解密,提交代码和运行结果截图。完成完成包含小组内成员的学号姓名的文件的签名验签名,提交代码和......
  • 实验二-密码引擎-3-sdf接口
    任务详情两人一组完成下面任务分析代码接口和智能钥匙的接口的异同编译运行附件中代码,提交运行结果截图修改test.c完成包含小组内成员的学号姓名的文件的sm3hash运算,sm4加密解密,提交代码和运行结果截图。完成完成包含小组内成员的学号姓名的文件的签名验签名,提交代码和运行......
  • 实验二-密码引擎-3-sdf接口
    任务详情两人一组完成下面任务0.分析代码接口和智能钥匙的接口的异同编译运行附件中代码,提交运行结果截图修改test.c完成包含小组内成员的学号姓名的文件的sm3hash运算,sm4加密解密,提交代码和运行结果截图。完成完成包含小组内成员的学号姓名的文件的签名验签名,提交代码和......
  • 实验二-密码引擎-3-sdf接口
    两人一组完成下面任务0分析代码接口和智能钥匙的接口的异同编译运行附件中代码,提交运行结果截图修改test.c完成包含小组内成员的学号姓名的文件的sm3hash运算,sm4加密解密,提交代码和运行结果截图。完成完成包含小组内成员的学号姓名的文件的签名验签名,提交代码和运行结果截图。0......
  • 实验二-密码引擎-3-sdf接口
    `/************************************************************************* >FileName:test.c >Author: >Mail: >CreatedTime:2018年04月26日星期四16时01分52秒************************************************************************/#incl......
  • 实验二-密码引擎-3-sdf接口
    两人一组完成下面任务0分析代码接口和智能钥匙的接口的异同代码接口和智能钥匙的接口是两种不同类型的接口,它们有一些异同点:类型:代码接口:通常指软件编程中的接口,用于不同软件组件之间的通信和交互。智能钥匙接口:指用于与智能钥匙通信和控制的物理接口,比如RFID接口、蓝牙接......
  • 实验二-密码引擎-3-sdf接口
    一、任务详情两人一组完成下面任务0分析代码接口和智能钥匙的接口的异同1.编译运行附件中代码,提交运行结果截图2.修改test.c完成包含小组内成员的学号姓名的文件的sm3hash运算,sm4加密解密,提交代码和运行结果截图。3.完成完成包含小组内成员的学号姓名的文件的签名验签名,......
  • 20211314实验二-密码引擎-3-sdf接口
    任务详情两人一组完成下面任务分析代码接口和智能钥匙的接口的异同编译运行附件中代码,提交运行结果截图修改test.c完成包含小组内成员的学号姓名的文件的sm3hash运算,sm4加密解密,提交代码和运行结果截图。完成完成包含小组内成员的学号姓名的文件的签名验签名,提交代码和运行......
  • 20211128李杰—— MD5哈希长度延展攻击
    任务描述:在一个使用MD5哈希算法的系统中,管理员使用了一个密钥k和命令cmd的组合来生成每个命令的签名:hash(k||cmd)。你已经获得了一个允许查看文件的命令cmd=viewfile和对应的签名h,但你希望通过哈希长度延展攻击,生成一个新的签名,该签名能够让你执行删除文件的命令(删除文件的命令为......
  • 20211128李杰——实验一-密码引擎-3-加密API研究
    实验一-密码引擎-加密API研究 实验一-密码引擎-加密API研究密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异......