我做了一个winform的程序,连接数据库通过读取app.config
我怎么在配置文件之前加密数据库连接字符串,加密后的字符串怎么再进行修改,需要做一个小程序专门修改数据库连接么?
不想让别人看到配置文件中的明文口令,那样太弱智了.
高手给点实质性建议或者代码,加密后可以方便的修改连接,很自然的能够顺利解密配置文件就可以..
拜谢了!!
我怎么在配置文件之前加密数据库连接字符串,加密后的字符串怎么再进行修改,需要做一个小程序专门修改数据库连接么?
不想让别人看到配置文件中的明文口令,那样太弱智了.
高手给点实质性建议或者代码,加密后可以方便的修改连接,很自然的能够顺利解密配置文件就可以..
拜谢了!!
解决方案 »
- c# webbrowser 静音功能
- 读取数字的正则表达式
- 取char[]内字符个数
- App.config如何读取其他的配置文件
- vs2008中dataGridView显示表,连接access,表中有一列是日期,格式设定为yyyy-mm。dataGridView中格式错误
- 13分全部压上:在C#中用DC绘图,可以吗?望大家不吝赐教 等待ing...
- 如何在winform中打開一個Excel文件
- 各位大哥:IP地址和子网掩码验证的正则表达式?急着用!
- C# 如何在word中插入特殊字符,高手求救~~
- 请问如何用C#实现运行时动态加载控件,并将控件的点击事件用同一个过程处理?
- 指纹识别系统
- 关于SQLServer2005的查询通知
public class DESEncrypt
{//注意: 经过测试,yourkey只有前6个字符起作用
/// <summary>
/// 构造方法
/// </summary>
public DESEncrypt()
{
}
/// <summary>
/// 使用缺省密钥字符串加密,返回密文
/// </summary>
/// <param name="original">明文</param>
/// <returns>密文</returns>
public string Encrypt(string original)
{
return Encrypt(original, "yourkey");
}
/// <summary>
/// 使用缺省密钥解密,返回明文
/// </summary>
/// <param name="original">密文</param>
/// <returns>明文</returns>
public string Decrypt(string original)
{
return Decrypt(original, "yourkey", System.Text.Encoding.Default);
}
/// <summary>
/// 使用给定密钥解密
/// </summary>
/// <param name="original">密文</param>
/// <param name="key">密钥</param>
/// <returns>明文</returns>
private static string Decrypt(string original, string key)
{
return Decrypt(original, key, System.Text.Encoding.Default);
}
/// <summary>
/// 使用缺省密钥解密,返回指定编码方式明文
/// </summary>
/// <param name="original">密文</param>
/// <param name="encoding">编码方式</param>
/// <returns>明文</returns>
private static string Decrypt(string original, Encoding encoding)
{
return Decrypt(original, "yourkey", encoding);
}
/// <summary>
/// 使用给定密钥加密
/// </summary>
/// <param name="original">原始文字</param>
/// <param name="key">密钥</param>
/// <param name="encoding">字符编码方案</param>
/// <returns>密文</returns>
private static string Encrypt(string original, string key)
{
try
{
byte[] buff = System.Text.Encoding.Default.GetBytes(original);
byte[] kb = System.Text.Encoding.Default.GetBytes(key);
return Convert.ToBase64String(Encrypt(buff, kb));
}
catch
{
return original;
}
} /// <summary>
/// 使用给定密钥解密
/// </summary>
/// <param name="encrypted">密文</param>
/// <param name="key">密钥</param>
/// <param name="encoding">字符编码方案</param>
/// <returns>明文</returns>
private static string Decrypt(string encrypted, string key, Encoding encoding)
{
try
{
byte[] buff = Convert.FromBase64String (encrypted);
byte[] kb = System.Text.Encoding.Default.GetBytes(key);
return encoding.GetString(Decrypt(buff, kb));
}
catch
{
return encrypted;
}
}
/// <summary>
/// 生成MD摘要
/// </summary>
/// <param name="original">数据源</param>
/// <returns>摘要</returns>
private static byte[] MakeMD(byte[] original)
{
MD5CryptoServiceProvider hashmd = new MD5CryptoServiceProvider();
byte[] keyhash = hashmd.ComputeHash(original);
hashmd = null;
return keyhash;
} /// <summary>
/// 使用给定密钥加密
/// </summary>
/// <param name="original">明文</param>
/// <param name="key">密钥</param>
/// <returns>密文</returns>
private static byte[] Encrypt(byte[] original, byte[] key)
{
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Key = MakeMD(key);
des.Mode = CipherMode.ECB; return des.CreateEncryptor().TransformFinalBlock(original, 0, original.Length);
} /// <summary>
/// 使用给定密钥解密数据
/// </summary>
/// <param name="encrypted">密文</param>
/// <param name="key">密钥</param>
/// <returns>明文</returns>
private static byte[] Decrypt(byte[] encrypted, byte[] key)
{
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Key = MakeMD(key);
des.Mode = CipherMode.ECB; return des.CreateDecryptor().TransformFinalBlock(encrypted, 0, encrypted.Length);
} /// <summary>
/// 使用给定密钥加密
/// </summary>
/// <param name="original">原始数据</param>
/// <param name="key">密钥</param>
/// <returns>密文</returns>
private static byte[] Encrypt(byte[] original)
{
byte[] key = System.Text.Encoding.Default.GetBytes("yourkey");
return Encrypt(original, key);
} /// <summary>
/// 使用缺省密钥解密数据
/// </summary>
/// <param name="encrypted">密文</param>
/// <param name="key">密钥</param>
/// <returns>明文</returns>
private static byte[] Decrypt(byte[] encrypted)
{
byte[] key = System.Text.Encoding.Default.GetBytes("yourkey");
return Decrypt(encrypted, key);
}
}
步骤:
1.初次使用时生成连接串:前台提示输入server/user/pass,[保存],手工生成连接串,加密算法->密文,保存.
2.使用数据库:读取密文,解密->明文,程序使用明文进行数据库操作.
3.修改连接串:同步骤1.
4.查看连接串:读取密文,解密->显示.
5.手工修改配置文件:直接做个winform窗口吧.