首页 > 其他分享 >OpenSSL测试-SM3

OpenSSL测试-SM3

时间:2024-04-18 14:55:23浏览次数:27  
标签:md mdctx MD 摘要 SM3 OpenSSL value 测试 EVP

第二题

#include <stdio.h>
#include <openssl/evp.h>

int main() {
    EVP_MD_CTX *mdctx;
    const EVP_MD *md;
    unsigned char md_value[EVP_MAX_MD_SIZE];
    unsigned int md_len;
    int i;

    // 初始化 OpenSSL
    OpenSSL_add_all_algorithms();

    // 创建一个 SM3 摘要对象
    md = EVP_sm3();

    // 创建摘要上下文
    mdctx = EVP_MD_CTX_new();

    // 初始化摘要上下文
    EVP_DigestInit_ex(mdctx, md, NULL);

    // 更新摘要上下文以包含待计算的数据
    EVP_DigestUpdate(mdctx, "20211301", 8);

    // 计算摘要值
    EVP_DigestFinal_ex(mdctx, md_value, &md_len);

    // 打印摘要值
    printf("SM3 Digest value: ");
    for (i = 0; i < md_len; i++) {
        printf("%02x", md_value[i]);
    }
    printf("\n");

    // 释放摘要上下文
    EVP_MD_CTX_free(mdctx);

    return 0;
}

第三题

#include <stdio.h>
#include <openssl/evp.h>

#define BUFFER_SIZE 1024

int main() {
    EVP_MD_CTX *mdctx;
    const EVP_MD *md;
    unsigned char md_value[EVP_MAX_MD_SIZE];
    unsigned int md_len;
    int i;

    // 初始化 OpenSSL
    OpenSSL_add_all_algorithms();

    // 创建一个 SM3 摘要对象
    md = EVP_sm3();

    // 创建摘要上下文
    mdctx = EVP_MD_CTX_new();

    // 初始化摘要上下文
    EVP_DigestInit_ex(mdctx, md, NULL);

    // 打开文件
    FILE *fp = fopen("all.der", "rb");
    if (fp == NULL) {
        printf("无法打开文件\n");
        return 1;
    }

    // 读取文件并更新摘要上下文
    unsigned char buffer[BUFFER_SIZE];
    size_t bytes_read;
    while ((bytes_read = fread(buffer, 1, BUFFER_SIZE, fp)) > 0) {
        EVP_DigestUpdate(mdctx, buffer, bytes_read);
    }

    // 关闭文件
    fclose(fp);

    // 计算摘要值
    EVP_DigestFinal_ex(mdctx, md_value, &md_len);

    // 打印摘要值
    printf("SM3 Digest value: ");
    for (i = 0; i < md_len; i++) {
        printf("%02x", md_value[i]);
    }
    printf("\n");

    // 释放摘要上下文
    EVP_MD_CTX_free(mdctx);

    return 0;
}

标签:md,mdctx,MD,摘要,SM3,OpenSSL,value,测试,EVP
From: https://www.cnblogs.com/pengqiqi/p/18143486

相关文章

  • 性能测试——概念概况
    负载测试:逐步增加系统负载,测试系统性能变化,并最终确定系统所能承受的最大负载量。          通过逐步增加并发用户数,测试系统性能变化,并最终确定系统所能承受的最大负载量。         简单理解:逐步加压,找系统能达到的最大并发数。 过程:......
  • AB性能测试分析
    官方文档:https://httpd.apache.org/docs/trunk/programs/ab.html测试场景:模拟10个用户,对应用接口发起总共1000次请求。测试命令:ab-n1000-c10'http://139.224.215.199:60011/api/v1/quicksearch/?id=170'测试报告:apache的版本信息,与本次测试无关[root@VM-16-11-centos......
  • Go 单元测试之mock接口测试
    目录一、gomock工具介绍二、安装三、使用3.1指定三个参数3.2使用命令为接口生成mock实现3.3使用make命令封装处理mock四、接口单元测试步骤三、小黄书Service层单元测试四、flags五、打桩(stub)参数六、总结6.1测试用例定义6.2设计测试用例6.3执行测试用例代码6.4运行测......
  • 测试markdown
    这是一个标题123这是二级标题这是斜体这是斜体123list-itemtimewindows1、2023-04-1706:58这次更新了一些新的文档-测试用例**代码规范**包含关于继电器设置PWM的寄存器配置串并联设置放大缩小设置1.时间2.地点3.问题这是引用不是正文这......
  • 银行功能测试之权限测试
    通常一个用户会有多个角色,也会有有兼职机构。有这么一个需求,一个菜单只允许某个岗位可以查看以及相应的增删改查,而这个岗位只能总行管理员配置,分行管理员是不可以配置的首先分析这个岗位只能总行管理员配置,那么分行管理员是不允许选择这个岗位的,但是同时如果总行管理员给用户赋......
  • Go 单元测试之Mysql数据库集成测试
    目录一、sqlmock介绍二、安装三、基本用法四、一个小案例五、Gorm初始化注意点一、sqlmock介绍sqlmock是一个用于测试数据库交互的Go模拟库。它可以模拟SQL查询、插入、更新等操作,并且可以验证SQL语句的执行情况,非常适合用于单元测试中。二、安装gogetgithub.com/......
  • 接口自动化测试工程实践分享
    本文作者:欧海锋,碧桂园服务高级测试工程师,致力于研究测试技术。一、前言接口自动化测试是一种软件测试技术,它通过模拟用户系统操作来对系统的接口进行自动化测试。接口自动化测试的目的是为了提高测试效率和准确性,同时降低测试成本和周期。以下是为什么需要进行接口自动化测试的......
  • openssl批量给tar.gz文件加解密
     #!/bin/bash#密码password="your_password_here"#加密函数encrypt(){input_file="$1"output_file="$input_file.enc"opensslenc-aes-256-cbc-salt-in"$input_file"-out"$output_file"-passp......
  • 快速测试连接SQLServer数据库的方法
    微软的SQLServer数据库应该是中小企业中使用最多的数据库,一般个人测试环境也都是用的它。下面介绍一种快速测试SQLServer数据库连接性的方法:1.新建一下记事本,将后缀名修改为udl;2.选中当前文件,右键打开文件属性,点选“提供程序”,选中MicrosoftOLEDBProviderforSQLServ......
  • Go 单元测试之HTTP请求与API测试
    目录一、httptest1.1前置代码准备1.2介绍1.3基本用法二、gock2.1介绍2.2安装2.3基本使用2.4举个例子2.4.1前置代码2.4.2测试用例一、httptest1.1前置代码准备假设我们的业务逻辑是搭建一个httpserver端,对外提供HTTP服务。用来处理用户登录请求,用户需要输入邮箱,密码。......