- [C#] Hướng dẫn viết ứng dụng theo dõi máy in bao nhiêu trang (Monitor Printer)
- [C#] Lấy thông tin cấu hình máy tính xuất ra text file winform
- [C#] Chia sẽ class Install, Uninstall, Start và Stop Services Winform
- [C#] Tìm kiếm tập tin file nhanh chóng trên Winform sử dụng thư viện FastSearchLibrary
- [C#] Giới thiệu thư viện Fluent FTP Awesome dùng để làm việc với FTP
- [C#] Sử dụng thư viện Mini Profiler Integrations ghi log thực hiện các câu lệnh SQL
- [DEVEXPRESS] Thiết kế Dropdown ButtonBarItem trên Form Ribbon
- [C#] Lưu trạng thái các control trên Winform vào Registry Windows
- [C#] Ứng dụng ví dụ Simple Observer Pattern tăng giảm số lượng trên winform
- [C#] Hướng dẫn lấy thời gian thực server time trên winform
- [DEVEXPRESS] Hướng dẫn bật tính năng Scroll Pixcel in Touch trên GridView
- [DEVEXPRESS] Hướng dẫn sử dụng TileBar viết ứng dụng duyệt hình ảnh Winform
- [DEVEXPRESS] Tô màu border TextEdit trên Winform
- [C#] Lấy dữ liệu từ Console Write hiển thị lên textbox Winform
- [C#] Hiển thị Progress bar trên Window Console
- [C#] Di chuyển control Runtime và lưu layout trên winform
- [SQLSERVER] Sử dụng hàm NULL IF
- [C#] Chia sẽ source code mã đi tuần bằng giao diện Winform
- [C#] Flash Window in Taskbar Winform
- Download và Giải nén tập tin File sử dụng Powershell
[C#] Hướng dẫn mã hóa file cấu hình App.config trong winform
Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách mã hóa và giải mã cho tập tin cấu hình App.config trong lập trình C#
[C#] Encrypt and Decrypt app.config winform
Trong bài viết này, mình sẽ nói đến cách giúp các bạn các mã hóa và giải mã chuỗi kết nối ConnectString trong tập tin App.config
.
Bài viết này mình sẽ sử dụng thuật toán mã hóa TripleDes để mã hóa và giải mã cho chuỗi kết nối ConnectString.
Các bạn cũng có thể sử dụng bất kỳ thuật toán mã hóa nào đối xứng để sử dụng: AES, DES, RSA... Các bạn có thể tìm hiểu những thuật toán mã hóa này tại link sau này.
Như bạn đã biết, chuỗi kết nối thường được lưu trữ trong app.config và nó hiếm khi được mã hóa.
Nếu ai đó mở tệp app.config
, họ sẽ thấy thông tin kết nối máy chủ cơ sở dữ liệu sqlserver.
Điều này rất nguy hiểm, nếu họ đăng nhập vào cơ sở dữ liệu để phá hoại hoặc chỉnh sửa dữ liệu mà không sử dụng phần mềm.
Do đó, mã hóa chuỗi kết nối là điều rất cần thiết, nó giúp bạn bảo mật thông tin kết nối với cơ sở dữ liệu với ứng dụng winform của bạn.
Thuật toán mã hóa TripleDes.
- Hàm phương thức mã hóa Encrypt TripleDes C#
string Encrypt(string source, string key)
{
using (TripleDESCryptoServiceProvider tripleDESCryptoService = new TripleDESCryptoServiceProvider())
{
using (MD5CryptoServiceProvider hashMD5Provider = new MD5CryptoServiceProvider())
{
byte[] byteHash = hashMD5Provider.ComputeHash(Encoding.UTF8.GetBytes(key));
tripleDESCryptoService.Key = byteHash;
tripleDESCryptoService.Mode = CipherMode.ECB;
byte[] data = Encoding.UTF8.GetBytes(source);
return Convert.ToBase64String(tripleDESCryptoService.CreateEncryptor().TransformFinalBlock(data, 0, data.Length));
}
}
}
2. Hàm phương thức giải mã Decrypt TripleDes C#
string Decrypt(string encrypt, string key)
{
using (TripleDESCryptoServiceProvider tripleDESCryptoService = new TripleDESCryptoServiceProvider())
{
using (MD5CryptoServiceProvider hashMD5Provider = new MD5CryptoServiceProvider())
{
byte[] byteHash = hashMD5Provider.ComputeHash(Encoding.UTF8.GetBytes(key));
tripleDESCryptoService.Key = byteHash;
tripleDESCryptoService.Mode = CipherMode.ECB;
byte[] data = Convert.FromBase64String(encrypt);
return Encoding.UTF8.GetString(tripleDESCryptoService.CreateDecryptor().TransformFinalBlock(data, 0, data.Length));
}
}
}
Để mã hóa các bạn sử dụng lệnh sau, truyền vào chuỗi mã và key để mã hóa
private void btnEncrypt_Click(object sender, EventArgs e)
{
txtEncrypt.Text = this.Encrypt(txtConnectionString.Text, "laptrinhvb.net");
}
Và dưới đây là sự kiện cho hàm giải mã
private void btnDecrypt_Click(object sender, EventArgs e)
{
txtDecrypt.Text = this.Decrypt(txtEncrypt.Text, "laptrinhvb.net");
}
Và dưới đây là chuỗi kết nối connectstring sau khi các bạn đã mã hóa trong tập tin app.config
<connectionStrings>
<add name="conectionstring" connectionString="Mgye6RzGcs8gV04QGylkMkdOewkdx+J/YILu0hIv4QMQYtzCHRyIEyAMgN6hIJsC1lKy4yxNFAO+ri0Yf4iyyb3p5nmXixTo" providerName="System.Data.SqlClient"/>
</connectionStrings>
Tiếp theo, các bạn có thể tạo một class Helper.cs
để giải mã chuỗi kết nối lại khi chúng ta cần đọc để kết nối cơ sở dữ liệu.
static string _connectionString;
public static string ConnectionString
{
get
{
if (_connectionString == null)
_connectionString = Decrypt(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString, "laptrinhvb.net");
return _connectionString;
}
}
Để sử dụng ConfigurationManager, các bạn cần import thư viện System.Configuration.dll vào nhé.
Thanks for watching!