生成される乱数に0が含まれないようにしたい場合は、GetNonZeroBytesメソッドを使うことができます。
RandomNumberGenerator.GetNonZeroBytesメソッドでバイト配列を非ゼロの乱数で満たす
using System;
using System.Security.Cryptography;
class Sample {
static void Main()
{
using var rng = RandomNumberGenerator.Create();
// RandomNumberGeneratorを使って0を含まない、16バイトのnonce値を3個生成する
var nonce = new byte[16];
for (var i = 0; i < 3; i++) {
rng.GetNonZeroBytes(nonce);
Console.WriteLine(BitConverter.ToString(nonce));
}
}
}
実行結果の一例
FE-E5-5B-48-5F-4C-8E-8A-1C-AE-58-51-A2-8C-E4-A0 2C-69-84-60-A9-67-B1-27-CD-BA-23-68-57-A0-D3-CE 01-81-99-64-30-52-67-2F-41-95-0A-A0-F8-39-A7-07