Что касается вашего первого вопроса, нет, как вы указываете, для MSDN оба API используют один и тот же алгоритм генератора псевдослучайных чисел. Вероятно, более уместно указать, что оба API используют один и тот же источник энтропии ядра Windows для подачи PRNG.
Что касается вашего второго вопроса, он более интересен, потому что поднимает вопрос о том, есть ли на хосте более качественный RNG, доступный в качестве стороннего дополнения (примером является аппаратный модуль безопасности, HSM). Аппаратный RNG может быть представлен через CNG (BCryptGenRandom), устаревший CAPI (Crypto API, CryptGenRandom) и/или как источник энтропии режима ядра. Если одно, но не оба, из первых двух, ваше приложение выиграет только в том случае, если оно вызовет этот конкретный RNG API. Но если аппаратный генератор случайных чисел установлен как источник энтропии ядра, ваше приложение выиграет в любом случае.
Важно ли что-либо из этого, больше зависит от характера вашего приложения и того, как оно обычно используется. Если криптооборудование вряд ли будет частью истории развертывания, то я не вижу особых причин для изменения вашего кода. Но если ваш продукт и криптооборудование, как правило, размещаются на одном и том же хосте, ваши клиенты выиграют от того, что вы осветите эту возможность.
person
hdracer
schedule
16.12.2016