- [C#] Cách Sử Dụng DeviceId trong C# Để Tạo Khóa Cho Ứng Dụng
- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
[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!