电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网络编程 -> ASP.NET教程
如何在asp.net中获取随机生成的cookie加密与验证密钥_asp.net技巧
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 

本文是从ASP.NE T 1.1升级到ASP.NET 2.0需要考虑的Cookie问题的补充,通过示例代码说明如何通过反射在ASP.NET 1.1与ASP.NET 2.0中获取随机生成的cookie加密与验证密钥。
ASP.NET 1.1示例代码:
            object machineKeyConfig = HttpContext.Current.GetConfig("system.web/machineKey");
            //得到System.Web.Configuration.MachineKey+MachineKeyConfig的实例,MachineKeyConfig是MachineKey的嵌套类

            Type machineKeyType = machineKeyConfig.GetType().Assembly.GetType("System.Web.Configuration.MachineKey");
            //得到System.Web.Configuration.MachineKey类型

            BindingFlags bf = BindingFlags.NonPublic | BindingFlags.Static;
            //设置绑定标志

            MethodInfo byteArrayToHexString = machineKeyType.GetMethod("ByteArrayToHexString", bf);
            //通过反射获取MachineKey中的ByteArrayToHexString方法,该方法用于将字节数组转换为16进制表示的字符串

            Byte[] validationKey = (Byte[])machineKeyType.GetField("s_validationKey",bf).GetValue(machineKeyConfig);
            //获取验证密钥字节数组
            SymmetricAlgorithm algorithm = (SymmetricAlgorithm)machineKeyType.GetField("s_oDes",bf).GetValue(machineKeyConfig);
            Byte[] decryptionKey = algorithm.Key;
            //获取加密密钥字节数组
            string ValidationKey = (string)byteArrayToHexString.Invoke(null,new object[]{validationKey,validationKey.Length});
            //将验证密钥字节数组转换为16进制表示的字符串
            string DecryptionKey = (string)byteArrayToHexString.Invoke(null,new object[]{decryptionKey,decryptionKey.Length});
            //将加密密钥字节数组转换为16进制表示的字符串
ASP.NET 2.0示例代码:
         System.Web.Configuration.MachineKeySection machineKeySection = new System.Web.Configuration.MachineKeySection();
        //直接创建MachineKeySection的实例,ASP.NET 2.0中用machineKeySection取代ASP.NET 1.1中的MachineKey,并且可以直接访问,没有被internal保护。
        Type type = typeof(System.Web.Configuration.MachineKeySection);//或者machineKeySection.GetType();

        PropertyInfo propertyInfo = type.GetProperty("ValidationKeyInternal", BindingFlags.NonPublic | BindingFlags.Instance);
        Byte[] validationKeyArray = (Byte[])propertyInfo.GetValue(machineKeySection, null);
        //获取随机生成的验证密钥字节数组

        propertyInfo = type.GetProperty("DecryptionKeyInternal", BindingFlags.NonPublic | BindingFlags.Instance);
        Byte[] decryptionKeyArray = (Byte[])propertyInfo.GetValue(machineKeySection, null);
        //获取随机生成的加密密钥字节数组

        MethodInfo byteArrayToHexString = type.GetMethod("ByteArrayToHexString", BindingFlags.Static | BindingFlags.NonPublic);
        //通过反射获取MachineKeySection中的ByteArrayToHexString方法,该方法用于将字节数组转换为16进制表示的字符串
        string validationKey = (string)byteArrayToHexString.Invoke(null, new object[] { validationKeyArray, validationKeyArray.Length });
        //将验证密钥字节数组转换为16进制表示的字符串
        string DecryptionKey = (string)byteArrayToHexString.Invoke(null, new object[] { decryptionKeyArray, decryptionKeyArray.Length });
        //将加密密钥字节数组转换为16进制表示的字符串

        //作者Blog: http://dudu.cnblogs.com


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·让asp.net简便使用script_asp.net技巧
·asp.net atlas对javascript的扩展_asp.net技巧
·asp.net服务器控件编程之热身运动_asp.net技巧
·.net下生产图片验证码_asp.net技巧
·.net分页控件发布_asp.net技巧
·如何在搜索结果出来之前,让页面显示“等待中...” _asp.net技巧
·sharpwebmail介绍和安装_asp.net技巧
·photoshop黑人照片肤色漂白变白人_photoshop教程
·做完一个小网站的一点经验总结(2): asp.net+access程序运行环境的配置_asp.net实例
·将web站点下的绝对路径转换为虚拟路径_asp.net技巧

最新文章
·对.net framework 反射的反思_asp.net技巧
·.net3.5和vs2008中的asp.net ajax_asp.net技巧
·使用asp.net ajax框架扩展html map控件_asp.net技巧
·asp.net应用程序资源访问安全模型_asp.net技巧
·photoshop初学者轻松绘制螺旋漩涡特效_photoshop教程
·photoshop通道结合图层模式抠狗尾巴草_photoshop教程
·web.config详解+asp.net优化_asp.net技巧
·asp.net中多彩下拉框的实现_asp.net技巧
·asp.net中数据校验部分的封装与应用_asp.net技巧
·asp.net网络编程中常用到的27个函数集_asp.net基础


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号