鸿 网 互 联 www.68idc.cn

加密Web.config中的信息

来源:互联网 作者:佚名 时间:2015-06-10 03:59
我们都知道nfig可以保存连接字符串 我们在程序中也都是这么做的 nfig是XML 所以它有清晰的结构 是我们很容易可以读懂它 但是这也出现一个问题 我们数据库完全暴露给浏览该文件的人 这是我们所不希望的 我们可以使用一个简单有效的加密算法来加密这段连接字符

  我们都知道nfig可以保存连接字符串我们在程序中也都是这么做的nfig是XML所以它有清晰的结构是我们很容易可以读懂它但是这也出现一个问题我们数据库完全暴露给浏览该文件的人这是我们所不希望的我们可以使用一个简单有效的加密算法来加密这段连接字符使直接浏览该文件的人不能清楚地看到这些信息
  
  我们一般以下面的形式保存连接字符串
     <appSettings>
       <add key=ConnectionString value=server=localhost;database=test;pwd=sa;uid=sa; />
     </appSettings>
  
  为了我们自己可以看得明白这些加密的字符我们需要一个额外的程序专门生成这些加密数据(这个额外的程序你可以写得很复杂但是为了说明问题我们使用简单的base编码数据这其实不是加密数据但是原理是一样的)我们建立一个WinForm工程专门用来生成明文到密文的(base)转换如果使用其它的加密算法可以替换这个加密过程转换按钮里面的代码如下
  
  private void button_Click(object sender SystemEventArgs e) {
    byte[] data = SystemTextASCIIEncodingASCIIGetBytes(thistextBoxText);
    string str = ConvertToBaseString(data);
    thistextBoxText = str;
   }
  
  其中textBox里面就是变码以后的字符我们可以将我们nfig里面的连接字符(server=localhost;database=test;pwd=sa;uid=sa;)取出来放在这个程序里面执行生成一个新的字符串(cVydmVyPWxvYFsaGzdDtkYXRhYmFzZTZXNOBZDzYTtaWQcE
  
  之后我们用这个字符替换未编码的字符串如下所示
    <appSettings>
      <add key=ConnectionString  value=cVydmVyPWxvYFsaGzdDtkYXRhYmFzZTZXNOBZDzYTtaWQcE />
    </appSettings>
  
  哈哈!看不见了吧!但是我们的程序也不认识了:( 没关系我们自己知道加密算法所以我们的程序可以看懂最后就是在程序中如何使用了我们的程序需要理解这个字符串的意义我们在数据访问层里面添加如下的工具方法
  
  private string GetConnectionString(){
    string strconn = SystemConfigurationConfigurationSettingsAppSettings[ConnectionString];
    byte[] data = ConvertFromBaseString(strconn);
    string strRealConn = SystemTextASCIIEncodingASCIIGetString(data);
    return strRealConn;
   }
  
  这样就可以得到真实的连接字符串了
  
  上文一个简单的加密(伪加密其实本文实现的是一个编码而非加密)的方法也许可以骗过一些人的眼睛但是对于了解内幕的人还是起步到什么保护的作用所以你可以扩展这个算法使用对称或者非对称的加密算法替换该案例里面的编码算法这样基本上就万无一失了
网友评论
<