有什么比较好的做简历的网站,网站功能描述书须包含哪些内容,华为网站的建设建议书,中国十大建筑公司任务详情
在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容 和AI要给出详细过程#xff0c;否则不得分。 0. 根据gmt0018标准#xff0c;如何调用接口实现基于SM3求你的学号姓名的SM3值#xff1f;#xff08;5‘#xff09;
使用OpenSSL实现SDF接…任务详情
在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容 和AI要给出详细过程否则不得分。 0. 根据gmt0018标准如何调用接口实现基于SM3求你的学号姓名的SM3值5‘
使用OpenSSL实现SDF接口中的hash运算接口至少支持SM3算法把相关函数集成到src中的sdf.c中中5’在test中的main.c调用进行测试至少测试计算你的学号数字你的学号字符串的SM3值。5‘提交代码或代码链接和运行结果截图
根据gmt0018标准如何调用接口实现基于SM3求你的学号姓名的SM3值5‘
#include sdf.h
#include string.h#define BUFFER_SIZE 1024int main() {int rv;unsigned char buffer[BUFFER_SIZE];unsigned int bufferLen;unsigned char hash[32]; // SM3哈希结果为32字节// 计算学号和姓名的SM3哈希值char *id 20211119;char *name 陈俊积;bufferLen strlen(id) strlen(name);memcpy(buffer, id, strlen(id));memcpy(buffer strlen(id), name, strlen(name));rv SDF_Hash(NULL, // hSessionHandle: 会话句柄可以为空buffer,bufferLen,hash);if (rv ! SDR_OK) {printf(Failed to calculate SM3 hash: %d\n, rv);return -1;}printf(SM3 hash for %s%s: , id, name);for (int i 0; i 32; i) {printf(%02X, hash[i]);}printf(\n);return 0;
}使用OpenSSL实现SDF接口中的hash运算接口至少支持SM3算法把相关函数集成到src中的sdf.c中中5’
为了支持SM3算法我们可以使用 OpenSSL 库中的 EVP_Digest 函数来计算哈希值。下面是修改后的 SDF_Hash 函数的实现
int SDF_Hash(void *hSessionHandle,unsigned char *pucData,unsigned int uiDataLength,unsigned char *pucHash)
{if (pucData NULL || uiDataLength 0 || pucHash NULL) {return SDR_INVALID_PARAMETER;}const EVP_MD *md;EVP_MD_CTX *mdctx;md EVP_sm3();mdctx EVP_MD_CTX_new();EVP_DigestInit_ex(mdctx, md, NULL);EVP_DigestUpdate(mdctx, pucData, uiDataLength);EVP_DigestFinal_ex(mdctx, pucHash, NULL);EVP_MD_CTX_free(mdctx);return SDR_OK;
}在上面的代码中我们使用 OpenSSL 库中的 EVP_Digest 函数计算了哈希值并将结果存储在 pucHash 缓冲区中。需要注意的是在使用 EVP_Digest 函数之前我们需要先初始化 EVP_MD_CTX 结构体并指定要使用的哈希算法这里使用 EVP_sm3() 函数。然后我们通过 EVP_DigestUpdate 函数传递要计算哈希值的数据最后通过 EVP_DigestFinal_ex 函数获取哈希结果。
需要将修改后的代码集成到 sdf.c 文件中如下所示
#include sdf.h
#include string.h
#include openssl/evp.hint SDF_Hash(void *hSessionHandle,unsigned char *pucData,unsigned int uiDataLength,unsigned char *pucHash)
{if (pucData NULL || uiDataLength 0 || pucHash NULL) {return SDR_INVALID_PARAMETER;}const EVP_MD *md;EVP_MD_CTX *mdctx;md EVP_sm3();mdctx EVP_MD_CTX_new();EVP_DigestInit_ex(mdctx, md, NULL);EVP_DigestUpdate(mdctx, pucData, uiDataLength);EVP_DigestFinal_ex(mdctx, pucHash, NULL);EVP_MD_CTX_free(mdctx);return SDR_OK;
}在test中的main.c调用进行测试至少测试计算你的学号数字你的学号字符串的SM3值。5‘
#include sdf.h
#include stdio.h#define BUFFER_SIZE 1024int main() {int rv;unsigned char buffer[BUFFER_SIZE];unsigned char hash[32]; // SM3哈希结果为32字节// 计算学号数字的SM3哈希值unsigned int id 20211128;rv SDF_Hash(NULL, // hSessionHandle: 会话句柄可以为空(unsigned char *)id,sizeof(id),hash);if (rv ! SDR_OK) {printf(Failed to calculate SM3 hash: %d\n, rv);return -1;}printf(SM3 hash for student ID (%u): , id);for (int i 0; i 32; i) {printf(%02X, hash[i]);}printf(\n);// 计算学号字符串的SM3哈希值char *idStr 20211128;rv SDF_Hash(NULL, // hSessionHandle: 会话句柄可以为空(unsigned char *)idStr,strlen(idStr),hash);if (rv ! SDR_OK) {printf(Failed to calculate SM3 hash: %d\n, rv);return -1;}printf(SM3 hash for student ID (string): );for (int i 0; i 32; i) {printf(%02X, hash[i]);}printf(\n);return 0;
}提交代码或代码链接和运行结果截图
sdf.c
#include sdf.h
#include string.h
#include openssl/evp.hint SDF_Hash(void *hSessionHandle,unsigned char *pucData,unsigned int uiDataLength,unsigned char *pucHash)
{if (pucData NULL || uiDataLength 0 || pucHash NULL) {return SDR_INVALID_PARAMETER;}const EVP_MD *md;EVP_MD_CTX *mdctx;md EVP_sm3();mdctx EVP_MD_CTX_new();EVP_DigestInit_ex(mdctx, md, NULL);EVP_DigestUpdate(mdctx, pucData, uiDataLength);EVP_DigestFinal_ex(mdctx, pucHash, NULL);EVP_MD_CTX_free(mdctx);return SDR_OK;
}main.c
#include sdf.h
#include stdio.h#define BUFFER_SIZE 1024int main() {int rv;unsigned char buffer[BUFFER_SIZE];unsigned char hash[32]; // SM3哈希结果为32字节// 计算学号数字的SM3哈希值unsigned int id 20211128;rv SDF_Hash(NULL, // hSessionHandle: 会话句柄可以为空(unsigned char *)id,sizeof(id),hash);if (rv ! SDR_OK) {printf(Failed to calculate SM3 hash: %d\n, rv);return -1;}printf(SM3 hash for student ID (%u): , id);for (int i 0; i 32; i) {printf(%02X, hash[i]);}printf(\n);// 计算学号字符串的SM3哈希值char *idStr 20211128;rv SDF_Hash(NULL, // hSessionHandle: 会话句柄可以为空(unsigned char *)idStr,strlen(idStr),hash);if (rv ! SDR_OK) {printf(Failed to calculate SM3 hash: %d\n, rv);return -1;}printf(SM3 hash for student ID (string): );for (int i 0; i 32; i) {printf(%02X, hash[i]);}printf(\n);return 0;
}