app.config数据库连接字符串的加密
时间: 2024-03-27 17:37:35 浏览: 59
为了保护应用程序中敏感的信息,比如数据库连接字符串,可以对其进行加密处理。下面是一个示例代码,可以实现在app.config文件中的数据库连接字符串的加密:
1. 创建一个控制台应用程序,然后在程序中使用以下代码:
```
using System;
using System.Configuration;
using System.Security.Cryptography;
using System.Text;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
// 获取app.config中的数据库连接字符串
string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
// 加密字符串
string encryptedString = EncryptString(connectionString);
// 将加密后的字符串写入app.config文件
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["MyConnectionString"].Value = encryptedString;
config.Save();
Console.WriteLine("String has been encrypted!");
}
// 加密字符串
private static string EncryptString(string inputString)
{
byte[] key = { 1, 2, 3, 4, 5, 6, 7, 8 };
byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };
byte[] inputBytes = Encoding.UTF8.GetBytes(inputString);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
byte[] outputBytes = null;
// 创建加密器对象
using (ICryptoTransform encryptor = des.CreateEncryptor(key, iv))
{
// 执行加密操作
outputBytes = encryptor.TransformFinalBlock(inputBytes, 0, inputBytes.Length);
}
// 将加密后的字节数组转成字符串
return Convert.ToBase64String(outputBytes);
}
}
}
}
```
2. 在app.config文件中,添加以下内容:
```
<connectionStrings>
<add name="MyConnectionString" connectionString="Data Source=(local);Initial Catalog=MyDatabase;User ID=myUsername;Password=myPassword" />
</connectionStrings>
```
3. 运行程序,程序将会读取app.config文件中的数据库连接字符串,并将其加密后写入app.config文件中。加密后的连接字符串将会是一长串随机字符。
4. 在应用程序中,可以使用以下代码来获取解密后的数据库连接字符串:
```
string encryptedString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
string decryptedString = DecryptString(encryptedString);
```
其中,DecryptString方法的实现如下:
```
// 解密字符串
private static string DecryptString(string encryptedString)
{
byte[] key = { 1, 2, 3, 4, 5, 6, 7, 8 };
byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };
byte[] inputBytes = Convert.FromBase64String(encryptedString);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
byte[] outputBytes = null;
// 创建解密器对象
using (ICryptoTransform decryptor = des.CreateDecryptor(key, iv))
{
// 执行解密操作
outputBytes = decryptor.TransformFinalBlock(inputBytes, 0, inputBytes.Length);
}
// 将解密后的字节数组转成字符串
return Encoding.UTF8.GetString(outputBytes);
}
}
```
这样,应用程序就可以安全地使用app.config文件中的数据库连接字符串了。
阅读全文