**后续讨论:WinForm工程connectionStrings的加密之后的问题
我的前个问题:   
 我用的是VS2005,C#的WinForm的程序(客户端),数据库(SQL   Server)在服务器上,客户端完成查询等功能,C#程序发布完成后,发现有个xxx.exe.cfg的文件里面connectionStrings有数据用户名和密码,这样就泄露了数据库信息。 
 在这种情况下,怎么解决??具体方法。要求不用烦琐的手工添加代码。     
 经过大家的热心回答,总结“juedaihuaihuai(绝代坏坏)”和“ccp5780199(观阴大湿)   ”的解答,我的问题已经解决,如下:   
 我把C#工程app.config改名为web.config放在d:\下,然后用 
 aspnet_regiis.exe   -pef    "connectionStrings "    "D:\ " 
 完成加密 
 再把web.config改回名字app.config覆盖原来的文件。 
 从新发布或打包,程序安装后,xxx.exe.cfg里的connectionStrings加密了,保护了数据库信息。     
 给分结果: 
 juedaihuaihuai(绝代坏坏)   45分--首先提出了上面方法,并给出了加密命令的全路径,给50分,但把加密参数pef错打成了解密参数pdf,酌情减5分^_^,见谅。再次感谢!   
 ccp5780199(观阴大湿)            回答两次共30分,缺少加密命令的全路径哦,不过第二次给出了解密方法,感谢。   
 其他人:虽然回答不是我想要的,但是给出了其他思路的朋友,酌情给了些分。   
 本想多给大家些分,但能力有限。 
 谢谢大家的热心解答。     
 言归正传: 
 上面的问题解决了,但是新的问题是,如果使用我写的软件的用户,知道了这个解密的方法,不是同样可以进行解密,轻易获取我的服务器上数据库的用户名和密码信息吗??      经我试验也确实如此!   
 如何解决?思路和具体方法!简单、具体、有效,越好。     
 (我就奇怪了,为什么用微软的VS2005建立访问数据库的桌面应用程序很方便(用鼠标在控件上设置数据库信息就可以了),但程序发布后,会暴露如此敏感的数据库信息呢!发布时如果能将这种敏感信息嵌入程序内部或自动加密的话,我这样的菜鸟不就会少很多烦恼了吗?o(∩_∩)o...)   
 只是想讨论讨论。
------解决方案--------------------那你自己写个加密算法不就可以了阿,这样就让别人猜去吧。不过话说回来,在牛的程序不是也有人破解吗?
------解决方案--------------------还是自己加密吧,以下是一个加解密的类。 
     ///  <summary>  
     /// RC2加解密类 
     ///  </summary>  
     public class RC2_ 
     { 
         private RC2 rc; 
         public string Key; 
         public string IV; 
         ///  <summary>  
         /// 对称加密类的构造函数 
         ///  </summary>  
         public RC2_(string key) 
         { 
             rc = new RC2CryptoServiceProvider(); 
             Key = key; 
             IV =  "#$^%&&*Yisifhsfjsljfslhgosdshf26382837sdfjskhf97(*&(* "; 
         } 
         ///  <summary>  
         /// 对称加密类的构造函数 
         ///  </summary>  
         public RC2_(string key, string iv) 
         { 
             rc = new RC2CryptoServiceProvider(); 
             Key = key; 
             IV = iv; 
         } 
         ///  <summary>  
         /// 获得密钥 
         ///  </summary>  
         ///  <returns> 密钥 </returns>  
         private byte[] GetLegalKey() 
         { 
             string sTemp = Key; 
             rc.GenerateKey(); 
             byte[] bytTemp = rc.Key; 
             int KeyLength = bytTemp.Length; 
             if (sTemp.Length >  KeyLength) 
                 sTemp = sTemp.Substring(0, KeyLength); 
             else if (sTemp.Length  < KeyLength) 
                 sTemp = sTemp.PadRight(KeyLength,  '  '); 
             return ASCIIEncoding.ASCII.GetBytes(sTemp); 
         } 
         ///  <summary>  
         /// 获得初始向量IV 
         ///  </summary>  
         ///  <returns> 初试向量IV </returns>  
         private byte[] GetLegalIV() 
         { 
             string sTemp = IV; 
             rc.GenerateIV(); 
             byte[] bytTemp = rc.IV; 
             int IVLength = bytTemp.Length; 
             if (sTemp.Length >  IVLength) 
                 sTemp = sTemp.Substring(0, IVLength); 
             else if (sTemp.Length  < IVLength) 
                 sTemp = sTemp.PadRight(IVLength,  '  '); 
             return ASCIIEncoding.ASCII.GetBytes(sTemp); 
         } 
         ///  <summary>  
         /// 加密方法 
         ///  </summary>  
         ///  <param na