如何从内部代码生成IIS machineKey?

时间:2018-07-10 11:27:38

标签: c# asp.net .net iis web-config

我想要此web.config部分的随机值:

<machineKey validation="HMACSHA512" decryption="AES"
     validationKey="I NEED VALUE FOR THIS" 
     decryptionKey="SOME KEY" />

我看到IIS管理器可以生成值,但是在我拥有的版本中,下拉菜单中没有用于“ HMACSHA512”的选项。所以我需要其他方法。

我可以为此编写一些C#代码,但是它应该做什么呢?它应该生成足够长的随机数和格式吗?

我是否只使用RNGCryptoServiceProvider类并生成适当的长字节数组,然后将其格式化为十六进制?可以吗?

1 个答案:

答案 0 :(得分:2)

  

我是否仅使用RNGCryptoServiceProvider类并生成适当的长字节数组,然后将其格式化为十六进制?

差不多。将.NET Framework is doing设置为AutoGenerate就是这样。

您可以使用RNGCryptoServiceProvider生成具有适当长度的十六进制值。 HMACSHA512使用512位值,即64字节或128个十六进制字符。因此,我们可以执行以下操作:

var rng = System.Security.Cryptography.RandomNumberGenerator.Create();
var buffer = new byte[64];
rng.GetBytes(buffer);
var hmacKey = BitConverter.ToString(buffer).Replace("-", "");