openssl学习(一) 摘要

openssl学习(一)    摘要

说在前面的话:
  最近要作一个使用openssl生成证书请求以及证书的解析的工做,想着openssl的一些功能也是多多少少的用了几年了,可是吧,对不少内容都是只知其一;不知其二,不少编码工做都是通了,好,就这样吧.
  好在这个工做不是很着急,就趁着这个机会,好好学习一下openssl.
  把学习过程记录下来,一是,加深本身的印象,二是,能够和你们一块儿讨论.因此,若是发现有不对的地方,欢迎你们指正.
  今天就从最简单的hash算法开始吧.
  对了,个人环境是ubuntu18.4,openssl-1.1.1算法

  数字摘要,哈希算法,散列函数,hash函数其实都是一个意思.就是将任意长度的数据,变成固定长度的短消息.不一样的算法,生成的长度不同,以SHA为例子.
  ubuntu

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

int main(void)
{
        unsigned char in[] = "abcdefghijklmnopqrstuvwxyz";
        unsigned char out[20] = {0};
        int in_len = strlen((const char *)in);
        int i;
        
        /* method 1,能够屡次调用SHA1_Update,填充多组数据 */
        SHA_CTX sha_ctx;
        SHA1_Init(&sha_ctx);
        SHA1_Update(&sha_ctx, in, in_len);
        SHA1_Final(out, &sha_ctx);
        printf("SHA1 digest result :\n");
        for (i = 0; i < 20; i++)
                printf("%x ", out[i]);
        printf("\n");
        
        /* method 2 */
        SHA1(in, in_len, out);
        printf("SHA1 digest result :\n");
        for (i = 0; i < 20; i++)
                printf("%x ", out[i]);
        printf("\n");
        
        return 0;
}

SHA1计算的结果长度为20.其余的长度以下:
 #define SHA_DIGEST_LENGTH 20
 #define SHA224_DIGEST_LENGTH 28
 #define SHA256_DIGEST_LENGTH 32
 #define SHA384_DIGEST_LENGTH 48
 #define SHA512_DIGEST_LENGTH 64
 详细能够参看头文件 openssl/sha.h.
经常使用的还有md算法,以及国产算法sm3,sm3将在之后的EVP中来学习.函数

相关文章
相关标签/搜索