如何生成Web.Config中MachineKey所需的值密钥

对于需要多个Web Application或者Web Farms环境下的Single Sign On,在Web.Config中<system.web>的<machineKey>元素必须手工指定加密算法和密钥值,而不能使用AutoGenerate。而且必须所有的Web Applications和所有的Web Server都使用相同的machineKey密钥值。
在MSDN的<machineKey>文档中有段文字,"通过使用CryptographyRNGCryptoServiceProvider类来创建这些密钥",这里的这个连接有误,其实应该是指向System.Security.Cryptography.RNGCryptoServiceProvider类参考。
System.Security.Cryptography.RNGCryptoServiceProvider是一个使用cryptographic service provider (CSP)的加密随机数生成器,通过它的GetBytes方法可以安全的生成一串随机字节序列。
对于像TripleDes之类的算法,也提供了接口可以直接生成随机密钥。
因为在machineKey中要求使用16进制字符串,所以生成之后还需要挨个Byte先格式化为16进制字符串。
下面这段代码演示了通过System.Security.Cryptography.TripleDESCryptoServiceProvider生成一个48个字符的3Des密钥,和System.Security.Cryptography.RNGCryptoServiceProvider生成一个128个字符的SHA1密钥,其他长度的密钥只需要变换len的值即可。
System.Security.Cryptography.TripleDESCryptoServiceProvider tripleDes = new System.Security.Cryptography.TripleDESCryptoServiceProvider();
   tripleDes.GenerateKey();
   Console.WriteLine("random tripleDes key:");
   StringBuilder sb1 = new StringBuilder(48);
   foreach (byte b in tripleDes.Key)
       sb1.Append(string.Format("{0:X2}", b));
   Console.WriteLine(sb1);

   int len = 128;
   byte[] buff = new byte[len / 2];
   System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
   rng.GetBytes(buff);
   Console.WriteLine("random SHA1 key:");
   StringBuilder sb2 = new StringBuilder(len);
   for (int i = 0; i < buff.Length; i++)
    sb2.Append(string.Format("{0:X2}", buff[i]));
   Console.WriteLine(sb2);

webconfig machineKey相关推荐

  1. 验证视图状态 MAC 失败,配置machineKey

    在webconfig中system.web节点下添加: <system.web><machineKey validationKey="3FF1E929BC0534950B0 ...

  2. 服务器配置,负载均衡时需配置MachineKey

    Asp.Net应用程序中为什么要MachineKey?如何生成MachineKey? 如果你的Asp.Net程序执行时碰到这种错误:"验证视图状态 MAC 失败.如果此应用程序由网络场或群集 ...

  3. IIS7.5+WebConfig实现页面伪静态和301重定向

    IIS7.5+WebConfig实现页面伪静态和301重定向 使用URLRewriter组件在windows 2003 +iis 6.0下配置伪静态的文章网络上一大堆.但在iis7.0或iis 7.5 ...

  4. 用DataSet修改WebConfig

    今天看到一招用DataSet修改WebConfig,真是简洁明了,一同分享     public void write()         {             string newValue= ...

  5. webconfig.java_基于JavaConfig配置的Spring MVC的构建

    上一篇讲了基于XML配置的构建,这一篇讲一讲基于JavaConfig的构建.为什么要写这篇文章,因为基于xml配置的构建,本人认为很麻烦,要写一堆的配置,不够简洁,而基于JavacConfig配置的构 ...

  6. WebConfig自定义节点并读取

    最近是遇到了一个需求,需要自定义WebConfig节点,然后进行读取,网上有很多博客,写的非常好,但是笔者在实现的过程中还是遇到了点问题,现在写一篇文章来总结下. 首先推荐大家看http://www. ...

  7. 跨服务器post数据失败:验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 machineKey 配置指定了相同的 validationKey 和验证算法。的解决办法

    非常简单,在webconfig中的 system.web中加入以下代码即可. <pages  enableViewStateMac="false"></pages ...

  8. WebConfig 加密解密的原理是什么?

    WebConfig 加密解密的原理是什么? 使用命令 加密数据连接串 加密:aspnet_regiis -pef connectionStrings d:/...(webconfig所在路径,不能含中 ...

  9. WebConfig配置 文件加密处理

    webconfig 文件加密处理 前几日正好遇到配置文件加密解密的问题,简单记录下流程. 1.首先运行cmd然后打开Framework.cd C:\Windows\Microsoft.NET\Fram ...

最新文章

  1. Spring AOP + Redis解决重复提交的问题
  2. Programming C# 学习笔记(二) 出发:“Hello World”
  3. 哪些人适合学习web前端?
  4. 万众瞩目的特斯拉AI日,会有哪些惊喜?
  5. 老年机按键串号_2019年最适合买的老人机——AGM M5,4G全网通+支持微信
  6. MySQL Event
  7. 【复杂系统迁移 .NET Core平台系列】之静态文件
  8. oracle查询file_name,Oracle DG环境下db_file_name_convert的实际意义
  9. 阿里神器Arthas 3.1.2版本发布,新特性解读
  10. pl/sql的存储过程
  11. ESP32使用Arduino环境,安装、编译、下载、安装库
  12. 打开模式时防止BODY滚动
  13. NIUDAY 七牛美图 AI 共享日 | 大咖云集 邀您共同探索各场景下的 AI 应用与落地...
  14. pjsip代码分析(1)——modules框架
  15. 湖西大学计算机专业排名,韩国留学热门的30个专业
  16. 中小型网站如何预防DDOS攻击
  17. 2010年《杨卫华谈微博架构》视频摘抄
  18. 这些网站,你应该知道(一)
  19. 需求工程:软件建模与分析 读书笔记三
  20. KY-RTI分布仿真技术:第九章 综合演示

热门文章

  1. 红米K50至尊版和红米K50 Pro区别 红米k50至尊版和红米k50pro参数对比
  2. ajax实现搜索提示源码,Jquery实现搜索框提示功能示例代码
  3. java动态代理和反射
  4. Elasticsearch Term Vectors(词频统计)
  5. JavaScript删除字符串中指定字符的四种方法
  6. linux 如何重启crontab,Linux crontab用法、启动关闭重启操作
  7. 苹果手机识别图片文字app,高准确率转换
  8. 车仪表台上的装饰_46汽车仪表盘装饰汽车仪表盘装饰类型
  9. 主成分分析的(Principal Components Analysis,PCA)多角度解析
  10. HDMI接口和TMDS传输标准详解