.net sqlconnection 连接字符串如何加密?
开发c/s架构的.net程序应该如何对数据库连接字符串加密?有人说放在appconfig里,我试过,程序安装到客户机上,可以直接打开appconfig文件看到里面的密码有...
开发c/s架构的.net程序应该如何对数据库连接字符串加密?
有人说放在appconfig里,我试过,程序安装到客户机上,可以直接打开appconfig文件看到里面的密码
有人说放在程序代码中,可以在网上随便找一个.net反编译程序都能看到源代码,看到密码和加密过程
有人说封装在一个dll文件里,这种跟上面一样可以被反编译
那到底怎样才能做到安全呢? 展开
有人说放在appconfig里,我试过,程序安装到客户机上,可以直接打开appconfig文件看到里面的密码
有人说放在程序代码中,可以在网上随便找一个.net反编译程序都能看到源代码,看到密码和加密过程
有人说封装在一个dll文件里,这种跟上面一样可以被反编译
那到底怎样才能做到安全呢? 展开
展开全部
#region AES加密
public static string Encrypt(string toEncrypt)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
RijndaelManaged rDel = new RijndaelManaged();//using System.Security.Cryptography;
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;//using System.Security.Cryptography;
rDel.Padding = PaddingMode.PKCS7;//using System.Security.Cryptography;
ICryptoTransform cTransform = rDel.CreateEncryptor();//using System.Security.Cryptography;
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
#endregion AES加密
#region AES解密
public static string Decrypt(string toDecrypt)
{
try
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");
byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
}
catch (Exception ex)
{
MessageBox.Show("无效字符串!!!");
return "";
}
}
#endregion AES解密
更多追问追答
追问
这是加解密过程,若要加密,必须传递一个字符串吧?别人反编译后看到你加密前的字符串和这个加密码过程,不一样可以得到密码吗?
比如调用过程是不是这样写: string PD= Encrypt('123456');
那人家通过反编译看到123456和Encrypt()过程,一样可以得到密码,不是吗?
追答
你理解错了.比如你的连接串是这个"server=.;database=testbase;uid=sa,pwd=123";
加密后是"nptSRd0vvvGbM4MWdZskD1FCPLGWth+kH1DMDb/jBF6b+MMsUPaDw+udEgJlBvTz";
你把这个加密后的存在webconfig中.
然后你程序里.
string jiemi Decrypt("加密后的");
什么程序都有安全隐患.这只是最基本的加密而已.高端的安全机制比这高级的多.硬件手段网络手段等等.话说回来,真正的高手破解咱们这服务器就几分钟,你网站根目录下有appconfig就是找死..关键在于人家懒得破.金山专注杀毒十几年,至少安全机制比你的高深N倍吧.不也1秒被攻破.
展开全部
没有决对的安全。
可以把连接串做成程序集的资源。
数据库是在客户端吗,那可以直接绕过你的程序,用数据库工具连上了(windows验证方式)。
如果是在服务器上,那你就不要让程序直接库,而是写一个中间通讯程序。
可以把连接串做成程序集的资源。
数据库是在客户端吗,那可以直接绕过你的程序,用数据库工具连上了(windows验证方式)。
如果是在服务器上,那你就不要让程序直接库,而是写一个中间通讯程序。
更多追问追答
追问
访问SQL服务器,不是本地数据库文件。
如何才能登录SQL服务器而不出现明码?
可以帮忙解释一下中间通讯程序吗?
追答
在你的sql服务器上,可以建一个web service (或其它方式),你的客户端程序只与web service交互。web service在服务器上与数据库交互。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询