我做了一个winform的程序,连接数据库通过读取app.config
我怎么在配置文件之前加密数据库连接字符串,加密后的字符串怎么再进行修改,需要做一个小程序专门修改数据库连接么?
不想让别人看到配置文件中的明文口令,那样太弱智了.
高手给点实质性建议或者代码,加密后可以方便的修改连接,很自然的能够顺利解密配置文件就可以..
拜谢了!!
我怎么在配置文件之前加密数据库连接字符串,加密后的字符串怎么再进行修改,需要做一个小程序专门修改数据库连接么?
不想让别人看到配置文件中的明文口令,那样太弱智了.
高手给点实质性建议或者代码,加密后可以方便的修改连接,很自然的能够顺利解密配置文件就可以..
拜谢了!!
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窗口吧.