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

20211215-sdf测试2-openssl

时间:2024-06-02 17:45:07浏览次数:16  
标签:rv hash int SM3 openssl unsigned sdf printf 20211215

以下是按照 Markdown 格式整理的你所需要的代码和操作过程,使用中文描述:

任务详情

在 openEuler(推荐)、Ubuntu 或 Windows(不推荐)中完成以下任务。参考网内容以及 AI 给出的详细过程,否则不得分。

0. 根据 gmt0018 标准,如何调用接口实现基于 SM3 求你的学号姓名的 SM3 值?

#include "sdf.h"
#include <string.h>

#define BUFFER_SIZE 1024

int main() {
    int rv;
    unsigned char buffer[BUFFER_SIZE];
    unsigned int bufferLen;
    unsigned char hash[32]; // SM3哈希结果为32字节

    // 计算学号和姓名的SM3哈希值
    char *id = "20211215";
    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;
}

1. 使用 OpenSSL 实现 SDF 接口中的 hash 运算接口,至少支持 SM3 算法,把相关函数集成到 src 中的 sdf.c 文件中

#include "sdf.h"
#include <string.h>
#include <openssl/evp.h>

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;
}

3. 在 test 中的 main.c 调用进行测试,至少测试计算你的学号(数字),你的学号(字符串)的 SM3 值

#include "sdf.h"
#include <stdio.h>

#define BUFFER_SIZE 1024

int main() {
    int rv;
    unsigned char buffer[BUFFER_SIZE];
    unsigned char hash[32]; // SM3哈希结果为32字节

    // 计算学号(数字)的SM3哈希值
    unsigned int id = 20211215;

    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 = "20211215";

    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;
}

标签:rv,hash,int,SM3,openssl,unsigned,sdf,printf,20211215
From: https://www.cnblogs.com/lududuze/p/18227384

相关文章

  • openssh9.7p1(OpenSSL 1.1.1w)适用于各Linux系统的rpm包
    本人近几日编译的openssh9.7p1包,用于解决漏洞扫描器提示openssh相关漏洞的问题处理。包含多个Linux发行版本(包含el6\el7\el8\openeuler2110\openeuler2203\BCLinux\eulerOS2.10对应版本等)。一、适用openeuler2203和openeuler2203sp*系列(含BClinux对应系列):openssh9.7P1forop......
  • 使用OpenSSL生成证书和私钥文件
    使用OpenSSL生成证书和私钥文件,请按以下步骤操作:第1步:生成RSA私钥opensslgenrsa-outprivate_key.pem2048参数-out指定生成的私钥文件名,参数2048指定生成的RSA私钥以位为单位的长度,常见的取值:1024、2048、3072、4096,较长的密钥通常提供更高的安全性,但可能导致性能下降......
  • End Of Live OpenSSL 1.1 vs Slow OpenSSL 3.0
    EndOfLiveOpenSSL1.1vsSlowOpenSSL3.0【英文原文】你可能已经注意到,OpenSSL1.1.1系列将于下周一(2024年5月27日)达到寿命终止(EOL)……最明智的选择是尽快切换到3.0或3.1版本。当然,我们的mORMot2OpenSSL单元在1.1和3.x分支上运行,并在运行时自适应每个......
  • 【libevent】OpenSSL加密
    一、OpenSSL简介OpenSSL是一个强大的加密库,广泛应用于互联网的各个角落,用于保护数据传输的安全。它实现了SSL和TLS协议,这些协议是现代网络安全的基石。二、OpenSSL概述OpenSSL是一个强大的开源工具,用于实现SSL和TLS协议,保障网络通信的安全。它不仅提供了加密库,还包括了命令行工......
  • 编译安装pcre2-10.39 zlib-1.3.1 openssl-3.0.13
    #!/bin/bash#auth:chenjf#func:installnginxstandalone#version:v2.0#sys:CentOSLinuxrelease7.9.2009(Core)#installerversion:pcre2-10.39zlib-1.3.1openssl-3.0.13PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin##要用root安装[$......
  • 编译安装nginx 1.26.0、openssl 3.0.13 常见报错
    报错1[[email protected]]#./config--prefix=/usr/local/openssl--openssldir=/usr/local/opensslsharedCan'tlocateIPC/Cmd.pmin@INC(@INCcontains:/root/nginx-install/openssl-3.0.13/util/perl/usr/local/lib64/perl5/usr/lo......
  • openssl版本升级
    【openssl版本升级】查看openssl版本opensslversion查看openssl路径whichopenssl下载opensslwgethttp://www.openssl.org/source/openssl-1.1.1q.tar.gz下载perlwgethttps://www.cpan.org/src/5.0/perl-5.30.0.tar.gz安装依赖yuminstall-yzl......
  • 可视化学习:使用极坐标参数方程和SDF绘制有趣的图案
    前言本文将介绍如何使用极坐标参数方程和上一篇文章提到的距离场SDF来绘制有趣的图案。说到曲线和几何图形的绘制,我们知道图形系统默认支持的是通过直角坐标绘制,但是有些曲线呢,不太容易使用直角坐标系来表示,却可以很方便地使用极坐标来表示,这个时候我们可以选择通过极坐标和直角......
  • nginx -with--openssl make报错解决方法
    nginx-with--openssl make报错解决方法##若报错/opt/nginx-1.18.0]#makemake-fobjs/Makefilemake[1]:Enteringdirectory`/opt/nginx-1.18.0'cd/usr/local/openssl\&&if[-fMakefile];thenmakeclean;fi\&&./config--pref......
  • 20211128- sdf 测试-2-openssl
    任务详情在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容和AI要给出详细过程,否则不得分。0.根据gmt0018标准,如何调用接口实现基于SM3求你的学号姓名的SM3值?(5‘)1.使用OpenSSL实现SDF接口中的hash运算接口,至少支持SM3算法,把相关函数集成到src中的sdf......