EVP_RAND-CTR-DRBG
名称
EVP_RAND-CTR-DRBG - CTR DRBG EVP_RAND 实现
描述
通过 **EVP_RAND** API 支持计数器确定性随机位生成器。
标识
“CTR-DRBG” 是此实现的名称;它可与 EVP_RAND_fetch() 函数一起使用。
支持的参数
支持的参数为
- "state" (**OSSL_RAND_PARAM_STATE**) <整数>
- "strength" (**OSSL_RAND_PARAM_STRENGTH**) <无符号整数>
- "max_request" (**OSSL_RAND_PARAM_MAX_REQUEST**) <无符号整数>
- "reseed_requests" (**OSSL_DRBG_PARAM_RESEED_REQUESTS**) <无符号整数>
- "reseed_time_interval" (**OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL**) <整数>
- "min_entropylen" (**OSSL_DRBG_PARAM_MIN_ENTROPYLEN**) <无符号整数>
- "max_entropylen" (**OSSL_DRBG_PARAM_MAX_ENTROPYLEN**) <无符号整数>
- "min_noncelen" (**OSSL_DRBG_PARAM_MIN_NONCELEN**) <无符号整数>
- "max_noncelen" (**OSSL_DRBG_PARAM_MAX_NONCELEN**) <无符号整数>
- "max_perslen" (**OSSL_DRBG_PARAM_MAX_PERSLEN**) <无符号整数>
- "max_adinlen" (**OSSL_DRBG_PARAM_MAX_ADINLEN**) <无符号整数>
- "reseed_counter" (**OSSL_DRBG_PARAM_RESEED_COUNTER**) <无符号整数>
- "properties" (**OSSL_DRBG_PARAM_PROPERTIES**) <UTF8 字符串>
- "cipher" (**OSSL_DRBG_PARAM_CIPHER**) <UTF8 字符串>
-
这些参数的工作原理如 "参数" 在 EVP_RAND(3) 中所述。
- "use_derivation_function" (**OSSL_DRBG_PARAM_USE_DF**) <整数>
-
此布尔值指示是否应使用派生函数。非零值(默认值)使用派生函数。零值不使用。
备注
可以通过调用以下方法获取 CTR DRBG 的上下文
EVP_RAND *rand = EVP_RAND_fetch(NULL, "CTR-DRBG", NULL);
EVP_RAND_CTX *rctx = EVP_RAND_CTX_new(rand, NULL);
示例
EVP_RAND *rand;
EVP_RAND_CTX *rctx;
unsigned char bytes[100];
OSSL_PARAM params[2], *p = params;
unsigned int strength = 128;
rand = EVP_RAND_fetch(NULL, "CTR-DRBG", NULL);
rctx = EVP_RAND_CTX_new(rand, NULL);
EVP_RAND_free(rand);
*p++ = OSSL_PARAM_construct_utf8_string(OSSL_DRBG_PARAM_CIPHER,
SN_aes_256_ctr, 0);
*p = OSSL_PARAM_construct_end();
EVP_RAND_instantiate(rctx, strength, 0, NULL, 0, params);
EVP_RAND_generate(rctx, bytes, sizeof(bytes), strength, 0, NULL, 0);
EVP_RAND_CTX_free(rctx);
符合标准
NIST SP 800-90A 和 SP 800-90B
另请参见
EVP_RAND(3), "参数" 在 EVP_RAND(3) 中所述
版权
版权所有 2020-2021 The OpenSSL Project Authors。版权所有。
根据 Apache 许可证 2.0 版(“许可证”)授权。除遵守许可证外,您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获取副本。