Я пытаюсь сгенерировать 6-значный код, который будет использоваться для двухфакторной аутентификации, на первый взгляд я мог бы сделать что-то вроде этого:
Random random = new Random();
var securitycode = random.Next(1000000, 10000000);
Однако это кажется мне несколько небезопасным, потому что,вероятно, есть способ предсказать следующее число, если вы можете выяснить начальные значения, взяв много кодов безопасности.
Я думаю, что есть лучший способ получить безопасный код, используя RNGCryptoServiceProvider
, но яЯ немного запутался в том, как я могу убедиться, что сгенерированный код состоит из 6 цифр
private string GenerateSecurityCode(int length)
{
var provider = new RNGCryptoServiceProvider();
var byteArray = new byte[8];
provider.GetBytes(byteArray);
var code = BitConverter.ToUInt32(byteArray, 0);
//how can I assure the code is 6 digits
}
Является ли это безопасным способом генерации кодов MFA, если нет, то каким будет хороший метод генерации числовых кодов?