大家知道在ASP.net 2.0里面有一个配置文件Machine.conf文件,里面有一个<Machine Key>Section,他的作用主要是用来保护主机不受Cross-site攻击,保护每个不同的Domain之间的Cookie,Viewstate,一般我们可以让机器自动生成,但是如果你的主机使用的是WEB-FARM也就是说你的主机多个Domain使用一个程序,那么每台机器上的KEY会不一样,所以达不到加密的效果,我们使用确切的KEY来解决这个目的,但是我们自己生成的文件无法达到机器生成的效果,那么我们自己就来写一个函数解决:
Public Static String CreateMachineKey(int Length)
{
//Create a byte array
byte[] key = new byte[length / 2];
//Fill the key with Security bytes
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(key);
//
System.Text.StringBuilder machineKey = new System.Text.StringBuilder(length);
for (int i = 0; i < key.Length;i++ )
{
machineKey.Append(string.Format("{0:X2}",key[i]));
}
return machineKey.ToString();
}