似乎没有办法在C#中手动播种RNGCryptoServiceProvider.我可以在下面做一些简单的事情来获得可重复的randomBytes进行调试吗?
RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider();
byte[] randomBytes = new byte[20];
rngCsp.GetBytes(randomBytes);
MessageBox.Show(Convert.ToBase64String(randomBytes));
Run Code Online (Sandbox Code Playgroud)
我知道我可以手动输入20个字节,但这是一个痛苦,因为我真的需要超过20个.另外,我知道我可以使用非加密随机数发生器,但最后,我将需要最好的随机生成.
顺便说一下,我猜有些CPU有真正的随机生成,其中种子在物理上是不可能的,但我不认为我的CPU具有这种能力.我想知道是否有人确切知道我可以用我的CPU来重置RNGCryptoServiceProvider环境并欺骗RNGCryptoServiceProvider使用先前的种子...我想我可以设置我的时钟并重置一些"用户日志位"某处...我知道这不切实际,但想知道是否有人在这方面取得过成功(尽管微软的目标可能是防止这种情况).
在C#程序中,我有一个错误检查,重复了很多:
try
{
File.Move(searchfolder + question1 +"_"+ filestring +".txt",
searchfolder + question1 +".txt");
}
catch (Exception ex)
{
File.AppendAllText(adminfolder + question1 +"_l.txt", "!");
side.Value = Convert.ToString(ex) + "[Check-In error at "
+ Convert.ToString(MYLINE) +"] "+ side.Value;
}
Run Code Online (Sandbox Code Playgroud)
MYLINE是一个数字,MYLINE是我的程序中唯一改变的东西.
因此,正常的C++ #define宏可以使这更简单(我只需要在程序的顶部编写完整的"#define CHECKIN(MYLINE)...").
如何在C#中处理这个问题?