openssl3.2 - exp - RAND_bytes_ex

openssl3.2 - exp - RAND_bytes_ex

概述

生成随机数时, 要检查返回值是否成功, 不能认为一定是成功的(官方文档上有说明).
生成随机数的API, 和库上下文有关系, 使用RAND_bytes_ex()比RAND_bytes()好些.

笔记

/*!
* \file main.cpp
* \note openssl3.2 - exp - RAND_bytes_ex
*/

#include "my_openSSL_lib.h"
#include <openssl/evp.h> // for EVP_MAX_BLOCK_LENGTH
#include <openssl/rand.h> // for RAND_bytes_ex

#include <cstdint> // for uint8_t

bool get_rand_buffer(uint8_t* Buf, int len);

int main(int argc, char** argv)
{
   
	uint8_t Buf[EVP_MAX_BLOCK_LENGTH];
	int len = (int)sizeof(Buf);

	do {
   
		if (!get_rand_buffer(Buf, len))
		{
   
			printf("error\n");
		}

		// 带缩进值打印buffer, 参数4是缩进值(打印每行之前, 先预留几个缩进空格)
		// 用BIO_dump_indent_fp打印, 能打印的好看点.
		BIO_dump_indent_fp(stdout, Buf, len, 4);

		printf("ok\n");
	} while (false);

	return 0;
}

bool get_rand_buffer(uint8_t* Buf, int len)
{
   
	bool b_rc = false;

	do {
   
		if ((NULL == Buf) || (len <= 0))
		{
   
			break;
		}

		// 官方文档上说, 调用RAND_bytes就行
		// 但是看了RAND_bytes()实现, 最好还是调用 RAND_bytes_ex(NULL, buf, (size_t)num, 0);, 这样能和库上下文联系起来
		// 如果在没有库上下文的场合, ctx就给NULL
		if (RAND_bytes_ex(NULL, Buf, len, 0) <= 0)
		{
   
			// error
			// 官方文档中特意说明, 取随机数时, 必须检查返回结果, 不要以为一定会成功
			break;
		}

		b_rc = true;
	} while (false);

	return b_rc;
}

END

相关推荐

  1. openssl3.2 - exp - RAND_bytes_ex

    2024-02-09 11:54:04       29 阅读
  2. openssl+EVP详解

    2024-02-09 11:54:04       28 阅读
  3. openssl3.2 - exp - get openssl version info

    2024-02-09 11:54:04       9 阅读
  4. openssl3.2 - exp - PEM <==> DER

    2024-02-09 11:54:04       26 阅读
  5. openssl3.2 - exp - AES-256-GCM

    2024-02-09 11:54:04       16 阅读
  6. openssl3.2 - exp - generate prime

    2024-02-09 11:54:04       20 阅读
  7. openssl3.2 - exp - aes-128-cbc

    2024-02-09 11:54:04       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-09 11:54:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-09 11:54:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-09 11:54:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-09 11:54:04       20 阅读

热门阅读

  1. 程序设计进阶——C语言(翁凯版)第五周

    2024-02-09 11:54:04       32 阅读
  2. 初识c++之基础认识

    2024-02-09 11:54:04       27 阅读
  3. C++:栈的作用域

    2024-02-09 11:54:04       31 阅读
  4. 怎么进入docker容器并执行

    2024-02-09 11:54:04       27 阅读
  5. Python笔记(九)

    2024-02-09 11:54:04       22 阅读
  6. OpenHarmony轻量级内核-LiteOS-M

    2024-02-09 11:54:04       31 阅读
  7. MongoDB聚合: $sort

    2024-02-09 11:54:04       29 阅读
  8. 编程中“游戏心切”心态的影响及其对策探讨

    2024-02-09 11:54:04       27 阅读
  9. GEE python——根据 GPS 轨迹绘制海拔高度剖面图

    2024-02-09 11:54:04       30 阅读