C#中Web.Config加密与解密的方法

Web.Config,其中一部分配置如下:


代码如下:

<appSettings>
    <add key="EricTest" value="EricTest"/>
    <add key="Encrypt" value="Encrypt value"/>
  <appSettings>

<connectionStrings >
    <add name="EncryptConnection" connectionString="Data Source=.\SQL2000;Initial Catalog=Northwind;user id=sa;password=test"/>
    <add name="SQLExpress" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=myDB;user id=sa;password=test"
     providerName="System.Data.SqlClient" />
  <connectionStrings>

在加密前,先做一些准备工作。

首先引用使用空间


代码如下:

using System.Configuration;
using System.Web.Configuration;
//将加密方式定义一下。主要是为了使用方便。

///
        /// 加密方式
        ///
        public enum EncryptType
        {
            DataProtectionConfigurationProvider,
            RSAProtectedConfigurationProvider
        }

使用DPAPI加密


代码如下:

///
        /// 以DPAPI方式加密Config
        ///
        private void EncryptWebConfigByDPAPI()
        {
            Configuration configuration = null;
            ConfigurationSection connectionSection = null;

//打开Request所在路径网站的Web.config文件
            configuration = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
            //取得Web.config中connectionStrings设置区块
            connectionSection = configuration.GetSection("connectionStrings");
            //未加密时
            if (!connectionSection.SectionInformation.IsProtected)
            {
                connectionSection.SectionInformation.ProtectSection(EncryptType.DataProtectionConfigurationProvider.ToString());
                configuration.Save();
            }
        }

加密前后的数据对比


代码如下:

<connectionStrings >
    <add name="EncryptConnection" connectionString="Data Source=.\SQL2000;Initial Catalog=Northwind;user id=sa;password=test"/>
    <add name="SQLExpress" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=myDB;user id=sa;password=test"
     providerName="System.Data.SqlClient" />
  <connectionStrings>

代码如下:

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
    <EncryptedData>
      <CipherData>
        <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAPCENeNbVhU6C+bx4E8qcPAQAAAACAAAAAAAQZgAAAAEAACAAAADiE56Y0pGCoKEpOvxMVmMYO3tMqI/2W89HUIq0LeJAegAAAAAOgAAAAAIAACAAAACYuFOjNtk1iprbV91mmP8aCIULLZvRHAPwbAvoHvtXpKACAABP0/YOt/B8IG/eLnaxrDVCXPq6l8McVOvpL0hV4507VEpJb6FyRoM9c5TI6iIF6Jz8GQfnfQiF4P27RLyvvvu/R9KpuwDsZ0IKjpe47Nt/q/qOLlQx6vhQVE8yAjJ64DrujH6wjS2XdZSC03Co4u9OG/YdJX9zkpjVMNW8cx5FFklYmIzHxWx+b1ZFtZMu0CA8lzU4slkTBFmE3JMMa4KqC6EGedDXD3z53QkBt3KISWt1lM5ulPeQ8rfR7qrzUEWQsgaGLuNTJvCDwlPJWbZVzQaOHo71/epQRPHgvmNAkK1/hRqwXr0uMF9K6HNKCr0NDLFECLHcjCC4zR6QhhWdWT8FHPm2Zg2yucekeHQsrbiWtjZqg/DdyVPLWqmEdj82T1Gm9u9xhDHuNLpOT1FXy7bGjjok9TW1MxbWIXQ7bBih0mUwmvESD8aZGdxoH0XEFyy3flY2hjwszG4Opg3Qmz1/S0x6Sbz1vJJL7rk7FTdG3PwMDFvcvKlmmDZQTkM3SqplazwrjYI4IJBnIAL/uBxwMdxO515lWS55dDkdnx5r8HtGoeCN+cw5qFW8xxRPRsQKg6Sgti1GF2KzezZ5WJegN0hqUs18XoEpzCuuALbzHqRNBswwn0/GfdadxfwdNxoTHdJ+cQC3vSLk5f02pTW9CFZWDn30AFjIpMtArNltppLvWAP1YxtKMtyzjmv7iiIOsMtHFICTJAzO7FeTc+YToifu/wddPESZQB2MlrefnUK+cBkoSzAusfhtqUWfhblv6JnEq5A/PdohEkSu0dn2pC6AeqoG/Yngb6BJzpRFxssDfIkDH6LfXdo4s5WJXJx7VQNqUo4mmTKoUcp6DGmoogZqbHODL3MbgKFQyjdvXV9+4Aa9qOlHbcKDL5tAAAAAChj0UAPAO59pmMZ7gJ67ho1Mxjg9NTuAh/lG5XI+phDRzWcNRmjv2ZrUhz8eWIgCMoIG7NviBnbmCeT4K8pXUw==CipherValue>
      <CipherData>
    <EncryptedData>
  <connectionStrings>

对使用DPAPI加密的数据解密


代码如下:

///
        /// 解密DPAPI
        ///
        private void DecryptWebConfigByDPAPI()
        {
            Configuration configuration = null;
            ConfigurationSection connectionSection = null;

//打开Request所在路径网站的Web.config文件
            configuration = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
            //取得Web.config中connectionStrings设置区块
            connectionSection = configuration.GetSection("connectionStrings");
            if (connectionSection.SectionInformation.IsProtected)
            {
                connectionSection.SectionInformation.UnprotectSection();
                configuration.Save();
            }
        }

调用DPAPI加密数据(无需解密)


代码如下:

///
        /// 取得加密后的数据
        ///
        private void GetEncryptWebConfigByDPAPI()
        {
            string cncryptConnection = WebConfigurationManager.ConnectionStrings["EncryptConnection"].ConnectionString;
            string sqlExpressConnection = WebConfigurationManager.ConnectionStrings["SQLExpress"].ConnectionString;
        }

使用RSA加密


代码如下:

///
        /// 以RSA方式加密Config
        ///
        private void EncryptWebConfigByRsa()
        {
            Configuration configuration = null;
            ConfigurationSection connectionSection = null;

//打开Request所在路径网站的Web.config文件
            configuration = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
            //取得Web.config中connectionStrings设置区块
            connectionSection = configuration.GetSection("appSettings");
            //未加密时
            if (!connectionSection.SectionInformation.IsProtected)
            {
                connectionSection.SectionInformation.ProtectSection(EncryptType.RSAProtectedConfigurationProvider.ToString());
                configuration.Save();
            }
        }

加密前后数据对比:


代码如下:

<appSettings>
    <add key="EricTest" value="EricTest"/>
    <add key="Encrypt" value="Encrypt value"/>
  <appSettings>

代码如下:

<appSettings configProtectionProvider="RsaProtectedConfigurationProvider">
    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
      xmlns="http://www.w3.org/2001/04/xmlenc#">
      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <KeyName>Rsa <KeyKeyName>
          <KeyInfo>
          <CipherData>
            <CipherValue>CJIkulw6qBtLeY5MJ9bs1ROpF1l3f4ulRzKnd6ZXN6XyG9O+b6Hr52ijK1AL9/+nsBseAPfdKDGaX/SKlJYwgzHhhi9sBrDBJ10dJcSnuGuWpI5zSLc+QHdpV0Z4iJTw83jmRDb9eFCX7aG60qWl52ofeqlI/ps1HsOjlKPSv8M=CipherValue>
          <CipherData>
        <EncryptedKey>
      <KeyInfo>
      <CipherData>
        <CipherValue>y1aEM/BRwcwZXWeuLe9mbakU8AuI7CpElrjoJgQEfzaoZXq7uEJspQAxJyDIYmCF4EgjKhE7pY6WBRAjRaBBODxxEQHGJ8I1+T554H8zosZ2InO43h5X0ZjCmvAWxNbEq1rP9DnuTcHEYqrw70nNShf79W6e2fmUF1DoVpwYNWMLeHJCP7ZkZg==CipherValue>
      <CipherData>
    <EncryptedData>
  <appSettings>

解密RSA加密数据


代码如下:

///
        /// 解密Rsa
        ///
        private void DecryptWebConfigByRsa()
        {
            Configuration configuration = null;
            ConfigurationSection connectionSection = null;

//打开Request所在路径网站的Web.config文件
            configuration = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
            //取得Web.config中connectionStrings设置区块
            connectionSection = configuration.GetSection("appSettings");
            if (connectionSection.SectionInformation.IsProtected)
            {
                connectionSection.SectionInformation.UnprotectSection();
                configuration.Save();
            }
        }

调用使用RSA加密数据(无需解密)


代码如下:

///
        /// 取得加密后的数据
        ///
        private void GetEncryptWebConfigByRsa()
        {
            string cncryptConnection = WebConfigurationManager.AppSettings["EricTest"];
            string sqlExpressConnection = WebConfigurationManager.AppSettings["Encrypt"];
        }

(0)

相关推荐

  • C# 读取指定路径配置文件的方法

    复制代码 代码如下: ExeConfigurationFileMap map = new ExeConfigurationFileMap();            map.ExeConfigFilename = @"F:\App1.config"; ;            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 

  • C#自定读取配置文件类实例

    本文实例讲述了C#自定读取配置文件类.分享给大家供大家参考.具体如下: 这个C#类定义了读取AppSettings的配置文件的常用方法,通过这个类可以很容易从AppSettings配置文件读取字符串.数字.bool类型的字段信息. using System; using System.Configuration; namespace DotNet.Utilities { /// <summary> /// web.config操作类 /// </summary> public se

  • C#获取web.config配置文件内容的方法

    本文实例讲述了C#获取web.config配置文件内容的方法.分享给大家供大家参考.具体实现方法如下: 1.ConfigurationManager提供对客户端应用程序配置文件的访问. 其有两个属性:ConnectionStrings 获取当前应用程序默认配置的 ConnectionStringsSection 数据. 方法一: 复制代码 代码如下: string myConn =System.Configuration.ConfigurationManager.ConnectionString

  • C#为配置文件加密的实现方法

    本文实例讲述了C#为配置文件加密的实现方法,分享给大家供大家参考.具体实现方法如下: 一般来说,在web.config或app.config文件里我们经常会存储一些敏感信息,比如connectionStrings或者appSettings,比如像下面的文件. 复制代码 代码如下: <?xml version="1.0"?> <configuration>     <system.web>       <compilation debug=&qu

  • c#读写ini配置文件示例

    其他人写的都是调用非托管kernel32.dll.我也用过 但是感觉兼容性有点不好 有时候会出现编码错误,毕竟一个是以前的系统一个是现在的系统.咱来写一个纯C#的ini格式配置文件读取,其实就是文本文件读写啦.但是我们要做的绝不仅仅是这样 是为了访问操作的方便 更是为了以后的使用. 都知道ini格式的配置文件里各个配置项 其实就是一行一行的文本 key跟value 用等号隔开.像这样:grade=5 .各个配置项又进行分组 同类型的放到一起 称之为section 以中括号([])区分.像这样:[

  • C#访问应用程序配置文件的方法

    App.config中写(注意C#中的应用程序配置文件名不能修改) 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?><configuration>  <connectionStrings>    <add name="URL" connectionString="http://www.hao123.com"/>    <a

  • ASP.NET(C#)应用程序配置文件app.config/web.config的增、删、改操作

    配置文件,对于程序本身来说,就是基础和依据,其本质是一个xml文件,对于配置文件的操作,从.NET 2.0 开始,就非常方便了,提供了 System [.Web] .Configuration 这个管理功能的NameSpace,要使用它,需要添加对 System.configuration.dll的引用. 对于WINFORM程序,使用 System.Configuration.ConfigurationManager: 对于ASP.NET 程序, 使用 System.Web.Configurat

  • C#针对xml基本操作及保存配置文件应用实例

    本文实例讲述了C#针对xml的基本操作及保存配置文件应用,分享给大家供大家参考.具体方法如下: 引言:这里首先介绍了xml的基本操作,后面写了一个经常用到的xml保存配置文件的实例. xml常用方法: 定义xml文档:XmlDocument xmlDoc = new XmlDocument(); 初始化xml文档:xmlDoc.Load("D:\\book.xml");//找到xml文件 创建根元素:XmlElement xmlElement = xmlDoc.CreateElemen

  • C#中Web.Config加密与解密的方法

    Web.Config,其中一部分配置如下: 复制代码 代码如下: <appSettings>    <add key="EricTest" value="EricTest"/>    <add key="Encrypt" value="Encrypt value"/>  <appSettings> <connectionStrings >    <add nam

  • IIS7中Web.config的rewrite实例分析讲解,教你看懂重写规则

    本文详细介绍解释了IIS7 Web.config rewrite规则设置url重写功能,通过讲解实例的语法结构和标签用法,搭配一些简单的正则表达式,你可以写出符合自己要求的重写规则. 首先请注意,本文适用IIS7及以上rewrite重写功能. 同样要注意的是,要实现在 Web.config 的rewrite重写功能,你必须先安装 URL_Rewrite 重写模块. 下面是本文要介绍的内容,如何通过 Web.config 的rewrite规则,设置url重写功能. 实例代码 <?xml versi

  • 纵谈网络加密及解密技术方法

    一.为Windows系统文件夹加密 说起来每个人都会有一些不乐意被人知道的隐私,比如工作计划.个人信息等等,为了保护这些秘密,加密软件便成了许多人的首选.不过网上流行的加密软件基本上都是对文件或文件夹直接进行加密处理,所以在文件较大或文件很多的情况下就需要花费较多的时间,而且当要使用这些文件的时候,还需要对其进行解密,使用完毕以后,又要重新加密,十分麻烦.有没有既能加密,又能像普通文件一样方便使用的工具呢?当然有,实际上利用Windows自带的功能就能满足您这个要求. 1.文件加密 (1)在Wi

  • IIS的web.config中跨域访问设置方法

    需求:页面要显示1个图片,但是因为各种原因,导致图片在服务器2上,但是要展示的程序在服务器1 的上面,这样就造成了在显示的时候出现了跨域的问题,本来的思路为直接写个程序进行后台获得图片的路径,然后把图片进行下载出来,然后返回服务器1的图片地址,但是,由于这个周期不确定性和现阶段项目的紧迫性,就放弃了.转为第2中方式,通过js 把图片下载到服务器上..找了下资料和别人沟通了下后,发现不能实现,然后准备用js+canvas 进行实现保存到本地,然后发现好像只能实现保存到本地.然后问题又回到了原点:就

  • asp.net web.config加密解密方法

    使用命令行工具aspnet_regiis.exe 你还能够使用aspnet_regiis.exe命令行工具来加密和解密Web.config文件配置部分,你可以在"%WINDOWSDIR%\Microsoft.Net\Framework\version"目录下找到这个工具.为了加密Web.config文件中的一个节,你可以在这个命令行工具中使用DPAPI机器密钥,如下所示: 加密一个特定网站的Web.config文件的通用形式: 复制代码 代码如下: aspnet_regiis.exe

  • 详解C#App.config和Web.config加密

    打开cmd,进入vs安装目录C:\Windows\Microsoft.NET\Framework64\v4.0.30319 cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319 如果是Web.config就直接加密,是App.config就先改为Web.config才可以进行加密 aspnet_regiis -pef "节点" "项目路径" 例如: 需要加密的App.config数据库连接字符串为 <connec

  • (JS实现)MapBar中坐标的加密和解密的脚本

    因为有一朋友问起这个问题,我找了下,今天就发出来看看吧,不知道说的对不对. 不过对于Mapbar这样处理的方法我个人觉得还是很值得学习的,至少不会给你明码的坐标. 不知道Mapbar的朋友看了会不会找我说我那,呵呵,不过没关系,最近想写篇文章给你们些个人的小小的建议,觉得说的不好也无妨.忙完这阵子就写. 下面是Mapbar中的加密和解密部分的JS,我做了简单说明了,什么36进制又16进制的,看的我也头晕. 实例的结果是这样的: IJSDSBWVJABFA解密后的值:121.46979,31.23

  • JAVA中AES对称加密和解密过程

    AES对称加密和解密代码详细介绍,供大家参考,具体内容如下 package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom;

  • python中的RSA加密与解密实例解析

    这篇文章主要介绍了python RSA加密与解密实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 什么是RSA: RSA公开密钥密码体制.所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种"由已知加密密钥推导出解密密钥在计算上是不可行的"密码体制. 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的.加密算法E和解密算法D也都是公开的.虽然解密密钥SK是由公开密钥PK

  • 详解ASP.NET中加密和解密的方法

    散列运算 mscorlib.dll下的System.Security.Cryptography下: 抽象类HashAlgorithm 抽象类MD5 MD5CryptoServiceProvider SHA1 SHA1CryptoServiceProvider密封类:调用Windows Crypto API SHA1Managed普通类:用托管代码写的 SHA256 SHA256CryptoServiceProvider SHA256Managed SHA384 SHA512 对字节数组或流散列运

随机推荐