WinForm下,关于数据库连接的问题.
数据库连接我一般有两种方法:
1是将连接字符串写在类里,编译成dll
2是写在ini文件里面.
1方法编译出的dll会被反编译,所以我想给ini文件加密,不知道怎么写.
------解决方案--------------------你可以
把字符串 转成字节 对每个字节使用一个你定义的运算公式运算,之后再转成字符串,别人就不认识了
你要写编码 和解码的2个函数
应该有现成的编解码公式
------解决方案--------------------连接串也加密!
------解决方案--------------------MD5加密没法还原的
想简单点话可以用MS的 EnterpriseLibrary
支持连接串加密
------解决方案--------------------可以用SEDO加密:
public class DESCode
{
private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
/// <summary>
/// DES加密字符串
/// </summary>
/// <param name= "encryptString "> 待加密的字符串 </param>
/// <param name= "encryptKey "> 加密密钥,要求为8位 </param>
/// <returns> 加密成功返回加密后的字符串,失败返回源串 </returns>
public static string EncryptDES(string encryptString, string encryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
byte[] rgbIV = Keys;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
return encryptString;
}
}
/// <summary>
/// DES解密字符串
/// </summary>
/// <param name= "decryptString "> 待解密的字符串 </param>
/// <param name= "decryptKey "> 解密密钥,要求为8位,和加密密钥相同 </param>
/// <returns> 解密成功返回解密后的字符串,失败返源串 </returns>
public static string DecryptDES(string decryptString, string decryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
byte[] rgbIV = Keys;
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return decryptString;
}
}
}
调用方法:
解密:DESCode.DecryptDES( "待解密的字符串 ", "加密密钥 ");// "加密密钥 "由你自己定义
加密:DESCode.EncryptDES(( "待加密的字符串 ", "加密密钥 ")