OpenSSL之SHA256学习

主要函数

用到的函数主要有以下几个:
1.SHA256_Init 用于初始化一个SHA256_CTX结构体
2.SHA256_Update 用于添加文件块来更新SHA256
3.SHA256_Final 获取文件的SHA256
4.SHA256 获取字符串的SHA256

代码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/sha.h>

#define MAX_DATA_LEN 1024
#define SHA256_LENTH 32

int main(int argc, char** argv)
{
    SHA256_CTX sha256_ctx;
    FILE* fp = NULL;
    char* strFilePath = "C:\\Users\\30797\\Desktop\\123.txt";
    unsigned char SHA256result[SHA256_LENTH];
    char DataBuff[MAX_DATA_LEN];
    int len;
    int t = 0;
    int i;

    fopen_s(&fp,strFilePath, "rb");  //打开文件

    do
    {
        //初始化SHA256
        SHA256_Init(&sha256_ctx);
        //循环获取所有文件的中的文件块用于更新SHA256
        while (!feof(fp))
        {
            memset(DataBuff, 0x00, sizeof(DataBuff));
            //读取文件块,大小为1024
            len = fread(DataBuff, 1, MAX_DATA_LEN, fp);
            if (len)
            {
                t += len;
                SHA256_Update(&sha256_ctx, DataBuff, len);   //将当前文件块加入并更新SHA256
            }
        }
        //获取SHA256
        SHA256_Final(SHA256result, &sha256_ctx); 
        //将文件的SHA256以16进制输出
        puts("file SHA256:");
        for (i = 0; i < SHA256_LENTH; i++) 
        {
            printf("%02x", (int)SHA256result[i]);
        }
        puts("\n");

    } while (0);
    //获取输入路径字符串SHA256
    SHA256((const unsigned char*)strFilePath, strlen(strFilePath), SHA256result);   
    //将路径名的SHA256以16进制输出
    puts("string SHA256:");
    for (i = 0; i < SHA256_LENTH; i++)
    {
        printf("%02x", (int)SHA256result[i]);
    }
    puts("\n");

    return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值