Как я могу генерировать криптографически безопасное псевдослучайное число в C#?

Mmm, Вы, возможно, поместили панель немного высоко, обоих на пределе (18,446,744,073,709,552,000, я даже не знаю, как записать это!) и на цели (другой код играет в гольф, привел к короткому коду, этот будет длинен, по крайней мере, для данных (слова)).

Так или иначе, для записи, я даю известное решение (не мой!) для французского языка, в PHP: Г‰criture des nombres en franГ§ais .:-)

Примечание неоднозначность (добровольный или не) Вашей формулировки: " Представления в любом приветствии языка "
я сначала взял его в качестве "естественного языка", прежде чем поймут, что Вы, вероятно, имели в виду "язык программирования...
алгоритм, вероятно, более прост на английском языке (и с меньшим количеством региональных вариантов...).

56
задан Alon Gubkin 3 November 2009 в 16:13
поделиться

3 ответа

using System.Security.Cryptography;
...
using(RandomNumberGenerator rng = new RNGCryptoServiceProvider())
{
    byte[] tokenData = new byte[32];
    rng.GetBytes(tokenData);

    string token = Convert.ToBase64String(tokenData);
}
106
ответ дан 26 November 2019 в 17:18
поделиться

Класс RNGCryptoServiceProvider , класс

3
ответ дан 26 November 2019 в 17:18
поделиться

Это зависит от того, что вы подразумеваете под быстрым ...

Не существует действительно быстрого безопасного генератора случайных чисел. Если вы хотите быстро, вы должны использовать обычный класс Random. Если вы хотите защитить себя, вы должны использовать генератор случайных чисел в пространстве имен Cryptography, но это значительно медленнее. У вас просто не может быть обоих.

3
ответ дан 26 November 2019 в 17:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: