Random random = new Random();
byte[] RandomKey = new byte[32];
string RandomKeyString = "0x";
for (int i = 0; i < 32; i++)
{
if (random.Next(0, 2) == 0)
{
RandomKeyString += random.Next(0, 11).ToString();
}
else
{
RandomKeyString += letter[random.Next(0, 26)];
}
if (random.Next(0, 2) == 0)
{
RandomKeyString += random.Next(0, 11).ToString();
}
else
{
RandomKeyString += letter[random.Next(0, 26)];
}
RandomKey[i] = RandomKeyString;
}
RandomKeyString 变量的输出应该类似于 0xFF 或 0x5E;您需要将 RandomKeyString 中的值写入 RandomKey 变量。
Random严格禁止使用 生成加密密钥,因为此 PRNG 不具有加密证明。要生成由随机字节组成的加密工件,需要RandomNumberGenerator从命名空间System.Security.Cryptography.这是这样完成的:
我们得到一个 32 个随机字节的数组。
如果需要将其输出为十六进制格式的字符串:
一般来说,
0xFF这不是 1 个字节。这是一个字符串,一个字节的文本表示。不要感到困惑。 1 个字节是byte0 到 255 之间的数字类型。但一般来说,表示加密算法的类会自动生成密钥。例如:
更多示例请参见此处。
直接回答这个问题,是这样的:
C#中的局部变量通常以小写字母命名。
是的,从任务来看,作者迫切希望将一行转换为字节数组,但我认为这可能是别的东西。由于某种原因,作者对每个字节的生成并没有偏离理解这个数据的标准太多。
无论如何,生成一个数字,然后将生成的数字转换为字符串,然后尝试将字符串转换为字节。这只能说明作者在任务中有点困惑,失去了原本的想法。但当然,这些只是我的建议,我是错的。但如果是这样的话,请不要严厉地评判。我只是想帮助作者。