C# winform程序连接数据库直连安全吗

C# winform程序连接数据库直连安全吗,第1张

不安全,给你两个加密解密函数

/// <summary>

/// DES加密,密钥为8位字符

/// </summary>

/// <param name="strEncrypt">需要加密的字符串</param>

/// <param name="strKey">8位的密钥</param>

/// <returns></returns>

public static string DesEncrypt(string strEncrypt, string strKey)

{

if (stringIsNullOrEmpty(strEncrypt)) return null;

try

{

DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] inputByteArray = EncodingDefaultGetBytes(strEncrypt);

desKey = ASCIIEncodingASCIIGetBytes(strKey);

desIV = ASCIIEncodingASCIIGetBytes(strKey);

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms, desCreateEncryptor(), CryptoStreamModeWrite);

csWrite(inputByteArray, 0, inputByteArrayLength);

csFlushFinalBlock();

StringBuilder ret = new StringBuilder();

foreach (byte b in msToArray())

{

retAppendFormat("{0:X2}", b);

}

retToString();

return retToString();

}

catch

{

return null;

}

}

/// <summary>

/// DES解密,密钥为8为字符

/// </summary>

/// <param name="strDecrypt">需要加密的字符串</param>

/// <param name="strKey">8位的密钥</param>

/// <returns></returns>

public static string DesDecrypt(string strDecrypt, string strKey)

{

if (stringIsNullOrEmpty(strDecrypt)) return null;

try

{

DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] inputByteArray = new byte[strDecryptLength / 2];

for (int x = 0; x < strDecryptLength / 2; x++)

{

int i = (ConvertToInt32(strDecryptSubstring(x 2, 2), 16));

inputByteArray[x] = (byte)i;

}

desKey = ASCIIEncodingASCIIGetBytes(strKey);

desIV = ASCIIEncodingASCIIGetBytes(strKey);

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms, desCreateDecryptor(), CryptoStreamModeWrite);

csWrite(inputByteArray, 0, inputByteArrayLength);

csFlushFinalBlock();

return SystemTextEncodingDefaultGetString(msToArray());

}

catch

{

return null;

}

}

}

使用方法,先把连接字符串加密

string strConnEnc = DesEncrypt(strConn,'abcd1234');

然后 strConnEnc 就是加密过的了,可以写在配置文件webconfig里头或别的地方

使用的时候

DesDecrypt(strConnEnc,'abcd1234')

调出来结果就是连接字符串了,可以用来连接数据库了

为什么不好?config里的connectionStrings本来用义就是放连接字符串的,当然最好加密,防止配置文件被打开导致泄密

如果不放配置文件里,写在代码里,那数据库一改,程序就得改,程序员累死算了

按照你的这个想法,基本无解。

因为在有源代码的情况下,任何加密或其它防护措施都变得透明。

幸亏微软想到了这个问题

配置文件加密:

>

这是一个把数据库里的数据生成XML格式,你稍微改一下就可以用在文本文件了。

<%@ Import Namespace= "SystemData " %>

<%@ Import Namespace= "SystemDataSqlClient " %>

<html>

<head>

<script language= "C# " runat= "server ">

public DataView Source;

public DataSet ds;

public bool getSchema, getData;

public void Submit_Click(Object sender, EventArgs evt) {

if (IsPostBack) {

SqlConnection myConnection = new SqlConnection(ConnectStringValue);

SqlDataAdapter myCommand = new SqlDataAdapter(myTextValue, myConnection);

ds = new DataSet();

myCommandFill(ds, "表 ");

Source = new DataView(dsTables[0]);

getSchema = GetSchemaChecked;

getData = GetDataChecked;

MyDataGridDataSource=Source;

MyDataGridDataBind();

}

}

</script>

</head>

<body bgcolor= "ffffcc ">

<h3> <font face= "宋体 "> SQL 到 XML 生成器 </font> </h3>

<form runat= "server ">

<table border=0 cellpadding=5 style= "font:105pt 宋体 ">

<tr>

<td colspan= "2 ">

<b> 连接字符串: </b> <br>

<input id= "ConnectString " type= "text " value= "server=(local);database=pubs;uid=sa;pwd=1234 " size= "85 " runat= "server ">

</td>

</tr>

<tr>

<td colspan= "2 ">

<b> 查询: </b> <br>

<input id= "myText " type= "text " value= "SELECT FROM Authors " size= "85 " runat= "server ">

</td>

</tr>

<tr>

<td>

<input type= "radio " id= "GetSchema " name= "Mode " runat= "server "/> 获取 XML 架构 <br>

<input type= "radio " id= "GetData " name= "Mode " runat= "server "/> 获取 XML 数据 <br>

<input type= "radio " id= "GetBoth " name= "Mode " checked runat= "server "/> 两者都获取

</td>

<td valign= "top ">

<input type= "submit " runat= "server " OnServerClick= "Submit_Click ">

</td>

</tr>

<tr>

<td colspan= "2 ">

<% if (PageIsPostBack) { %>

<b> 结果: </b> <br>

<textarea cols=80 rows=25>

<%

if (getSchema)

dsWriteXmlSchema(ResponseOutput);

else if (getData)

dsWriteXml(ResponseOutput, XmlWriteModeIgnoreSchema);

else

dsWriteXml(ResponseOutput, XmlWriteModeWriteSchema);

%>

</textarea>

<% } %>

</td>

</tr>

<tr>

<td colspan= "2 ">

<% if (PageIsPostBack) { %>

<b> 数据: </b> <br>

<% } %>

<ASP:DataGrid id= "MyDataGrid "

BackColor= "#EDBE7B "

BorderColor= "black "

ShowFooter= "false "

CellPadding=3

CellSpacing= "0 "

Font-Name= "宋体 "

Font-Size= "8pt "

HeaderStyle-BackColor= "#DC6035 "

EnableViewState= "false "

runat= "server "

/>

</td>

<tr>

</table>

</form>

</body>

</html>

mysql数据库中提供了很丰富的函数。mysql函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的 *** 作。

简单介绍几类函数的使用范围:

数学函数:这类函数只要用于处理数字。这类函数包括绝对值函数、正弦函数、余弦函数、获取随机数函数等。

字符串函数:这类函数主要用于处理字符串。其中包括字符串连接函数、字符串比较函数、将字符串的字母变成小写或大写字母的函数、获取子串的函数等。

日期和时间函数:这类函数主要用于处理日期和时间。其中包括取当前时间的函数、获取当前日期的函数、返回年份的函数、返回日期的函数等。

流程函数:这类函数主要用于在SQL语句中控制条件选择。其中包括IF语句、CASE语句、WHEN语句等。

系统信息函数:这类函数主要用于获取mysql数据库的系统信息。其中包括获取数据库名的函数、获取当前用户的函数、获取数据库版本的函数等。

加密函数:这类函数主要用于对字符串进行加密解密。其中包括字符串加密函数、字符串解密函数等。

其他函数:包括格式化函数、锁函数等。

以上就是关于C# winform程序连接数据库直连安全吗全部的内容,包括:C# winform程序连接数据库直连安全吗、c# winfrom程序连接数据库字符串写在配置文件里好吗、用C#的winform程序写了个DES解密函数。密钥写在里面的。但反编译能看到密钥。除加壳外,怎防密钥泄漏等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9290807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存