NEWS

[C#] Hướng dẫn mã hóa file cấu hình App.config trong winform

[C#] Hướng dẫn mã hóa file cấu hình App.config trong winform
Đăng bởi: Thảo Meo - Lượt xem: 18047 21:35:15, 08/09/2019C#   In bài viết

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.

App.config_with_checkmark

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.

  1. 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!

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[C#] Hướng dẫn mã hóa file cấu hình App.config trong winform
Đăng bởi: Thảo Meo - Lượt xem: 18047 21:35:15, 08/09/2019C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.