文章目录
- 一、编译生成链接库
- 二、示例一:调用RAND_bytes函数
- 三、示例二:调用SHA256
 
一、编译生成链接库
下载安装openssl并编译生成链接库的过程在我的另一篇文章中已经详细说明了:Ubuntu中安装OpenSSL
此外,我们还需要提前了解一些关于动态链接库的知识,具体内容可以在我的这篇文章中查看:一个简单的动态链接库示例
二、示例一:调用RAND_bytes函数
要调用OpenSSL库中的函数,需要在对应的C源文件中包含相应的头文件,并将库文件链接到程序中。
下面是一个简单的示例,演示如何在一个名为main.c的文件中使用OpenSSL库中的函数。
#include <stdio.h>  
#include <openssl/rand.h>  int main() {  // 生成一个随机的字节序列  unsigned char randomBytes[16];  RAND_bytes(randomBytes, sizeof(randomBytes));  // 打印生成的随机字节序列  printf("随机字节序列: ");  for (int i = 0; i < sizeof(randomBytes); i++) {  printf("%02x", randomBytes[i]);  }  printf("\n");  return 0;  
}
在这个示例中,引入了openssl/rand.h头文件,该文件包含RAND_bytes函数的声明。然后,在main函数中,通过调用了RAND_bytes函数来生成一个随机的字节序列,并将其打印出来。
要编译并链接这个程序,需要将OpenSSL库文件链接到该程序。可以使用下面的命令进行编译执行
gcc -o main main.c -lssl -lcrypto
./main
可以得到对应的输出结果

三、示例二:调用SHA256
首先新建一个main1.c文件,编写如下的代码
#include <stdio.h>  
#include <openssl/sha.h>  int main() {  unsigned char data[] = "Hello, World!";  unsigned char sha256_result[SHA256_DIGEST_LENGTH];  SHA256(data, strlen((char*)data), sha256_result);  printf("SHA256 Result: ");  for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {  printf("%02x", sha256_result[i]);  }  printf("\n");  return 0;  
}
之后编译执行,即可得到对应的结果
gcc -o main1 main1.c -lssl -lcrypto
./main1