Вы можете использовать openssl_random_pseudo_bytes (len, & crypto_stron) .
Первый параметр - это требуемая длина в байтах.Если вы используете это для использования в одном из методов open ssl, вы можете использовать функцию openssl_cipher_iv_length (method) , чтобы получить правильную длину для используемого метода.
Второй параметр,& crypto_strong, позволяет передавать логическую переменную, для которой будет установлено значение true или false, в зависимости от того, был ли используемый алгоритм криптографически безопасным.Затем вы можете проверить эту переменную и обработать ее правильно, если переменная вернется в ложь.Это никогда не должно произойти, но если это произойдет, вы, вероятно, захотите знать.
Вот пример правильного использования:
$method = 'aes-256-cbc';
$ivlen = openssl_cipher_iv_length($method);
$isCryptoStrong = false; // Will be set to true by the function if the algorithm used was cryptographically secure
$iv = openssl_random_pseudo_bytes($ivlen, $isCryptoStrong);
if(!$isCryptoStrong)
throw new Exception("Non-cryptographically strong algorithm used for iv generation. This IV is not safe to use.");
Для получения дополнительной информации см .: