包装设计网站素材,做网站怎么赚零花钱,拼多多福利券小程序怎么赚钱,html5手机网站开发框架文章目录 openssl3.2 - exp - RAND_bytes_ex概述笔记END openssl3.2 - exp - RAND_bytes_ex
概述
生成随机数时, 要检查返回值是否成功, 不能认为一定是成功的(官方文档上有说明). 生成随机数的API, 和库上下文有关系, 使用RAND_bytes_ex()比RAND_bytes()好些.
笔记
/*!
* … 文章目录 openssl3.2 - exp - RAND_bytes_ex概述笔记END 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_tbool 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就给NULLif (RAND_bytes_ex(NULL, Buf, len, 0) 0){// error// 官方文档中特意说明, 取随机数时, 必须检查返回结果, 不要以为一定会成功break;}b_rc true;} while (false);return b_rc;
}
END