C# 数据库链接字符串加密解密工具代码详解

下面是“C# 数据库链接字符串加密解密工具代码详解”的完整攻略。

1. 什么是数据库链接字符串加密解密?

在 C# 中,我们经常需要连接数据库进行数据交互。而数据库连接字符串包含数据库服务器地址、登录名和密码等敏感信息,需要对其进行加密保护。数据库链接字符串加密解密就是为了保护这些敏感信息不被不良程序窃取。

2. 如何加密和解密数据库链接字符串?

C# 提供了 System.Configuration 命名空间下的 ProtectedConfiguration 类,该类提供了 Protect 和 UnProtect 方法用于加密和解密敏感信息。下面是加密和解密数据库链接字符串的示例代码:

using System;
using System.Configuration;
using System.Security.Cryptography;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var connStr = @"Data Source=.\SQLEXPRESS;Initial Catalog=TestDB;User ID=sa;Password=123456";

            //加密链接字符串
            var encryptedConnStr = Protect(connStr);

            //解密链接字符串
            var decryptedConnStr = Unprotect(encryptedConnStr);

            Console.WriteLine($"加密前:{connStr}");
            Console.WriteLine($"加密后:{encryptedConnStr}");
            Console.WriteLine($"解密后:{decryptedConnStr}");
        }

        static string Protect(string input)
        {
            var bytes = System.Text.Encoding.Unicode.GetBytes(input);
            var protectedBytes = ProtectedData.Protect(bytes, null, DataProtectionScope.CurrentUser);
            return Convert.ToBase64String(protectedBytes);
        }

        static string Unprotect(string encryptedValue)
        {
            var bytes = Convert.FromBase64String(encryptedValue);
            var unprotectedBytes = ProtectedData.Unprotect(bytes, null, DataProtectionScope.CurrentUser);
            return System.Text.Encoding.Unicode.GetString(unprotectedBytes);
        }
    }
}

3. 实现敏感信息加密解密的工具类代码示例

下面是一个实现敏感信息加密解密的工具类代码示例:

using System.Configuration;
using System.Security.Cryptography;
using System.IO;

namespace Utils.Encryption
{
    ///<summary>
    ///Provides methods for encrypting and decrypting configuration section data.
    ///</summary>
    public class ConfigurationEncryption
    {
        ///<summary>
        ///Encrypts the configuration section protected with the DpapiProtectedConfigurationProvider.
        ///</summary>
        ///<param name="plainText">The plain text to encrypt.</param>
        ///<returns>The encrypted configuration section.</returns>
        public static string Protect(string plainText)
        {
            byte[] data = System.Text.Encoding.UTF8.GetBytes(plainText);
            byte[] dpapiData = ProtectedData.Protect(data, null, DataProtectionScope.CurrentUser);

            return System.Convert.ToBase64String(dpapiData);
        }

        ///<summary>
        ///Decrypts the configuration section protected with the DpapiProtectedConfigurationProvider.
        ///</summary>
        ///<param name="cipher">The encrypted configuration section to decrypt.</param>
        ///<returns>The decrypted configuration section.</returns>
        public static string Unprotect(string cipher)
        {
            byte[] dpapiData = System.Convert.FromBase64String(cipher);
            byte[] data = ProtectedData.Unprotect(dpapiData, null, DataProtectionScope.CurrentUser);

            return System.Text.Encoding.UTF8.GetString(data);
        }
    }
}

这个代码示例是一个静态工具类,通过调用 Protect 和 Unprotect 方法分别对数据进行加密和解密,在使用过程中可以方便地调用这两个方法实现敏感信息的保护。

示例说明

下面是两个示例说明:

  1. 将应用程序的配置文件中的数据库链接字符串进行加密处理。

```csharp
using System.Configuration;
using Utils.Encryption;

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStrings = config.ConnectionStrings.ConnectionStrings;
foreach (var connectionStringSettings in connectionStrings)
{
connectionStringSettings.ConnectionString = ConfigurationEncryption.Protect(connectionStringSettings.ConnectionString);
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("connectionStrings");
```

此示例通过对应用程序配置文件中的每个数据库链接字符串进行加密,保护敏感信息,防止恶意程序窃取。

  1. 在程序中使用解密后的链接字符串进行数据库连接。

```csharp
using System.Data.SqlClient;
using Utils.Encryption;

var encryptedConnStr = @"ENC:[vVv3tLgkLmvGZmGy/cToX06nZzncbQJsnZLB+wJrn0iiYg6fuc8sA9wXOxy6njVyitXN711HPRlZaDCnNSPBJxkqj2jgjJgHINiUJsWWEYeKe9FCQJwqlg==]";
var decryptedConnStr = ConfigurationEncryption.Unprotect(encryptedConnStr);

var conn = new SqlConnection(decryptedConnStr);
conn.Open();
```

此示例以加密后的链接字符串为输入,使用 ConfigurationEncryption.Unprotect 方法进行解密,得到连接数据库所需的链接字符串,再进行数据库连接。

总结

本文介绍了C# 数据库链接字符串加密解密工具代码,重点讲解了数据库链接字符串加密解密的方法和工具类的实现方式,并给出了两个示例说明该工具类的具体应用。这些内容对于保护敏感信息,增强应用程序的安全性具有重要意义。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 数据库链接字符串加密解密工具代码详解 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • 在web.config和app.config文件中增加自定义配置节点的方法

    在Web.config和App.config文件中添加自定义的配置节点可以方便的在应用程序中进行配置参数的管理,下面是完整的攻略。 在Web.config中增加自定义配置节点 首先打开Web.config文件,需要在<configuration>标签下增加自定义的配置节点,可以按照以下步骤进行: 在<configuration>标签下…

    C# 2023年5月15日
    00
  • ASP.NET 计划任务实现方法(不使用外接程序,.net内部机制实现)

    ASP.NET计划任务是指在后台自动执行一些指定的操作,例如定时清理临时文件、备份数据库等。在ASP.NET中,实现计划任务有多种方式,包括使用第三方外接程序或者利用.NET内部机制。 下面详细讲解如何使用.NET内部机制实现ASP.NET计划任务。 第一步:创建运行时间表达式 .NET内部机制实现计划任务依赖于时间表达式,时间表达式能够指定时、分、秒、月、…

    C# 2023年5月31日
    00
  • C#控制台程序使用Log4net日志组件详解

    C#控制台程序使用Log4net日志组件详解 Log4net是一个用于记录日志的流行的开源框架,它可以帮助开发者方便地记录应用程序的运行日志,并且支持在运行时动态地控制日志等级和输出目标。本篇攻略将从以下几个方面详细讲解如何在C#控制台程序中使用Log4net日志组件: 安装Log4net并添加配置文件 创建Logger对象 记录日志信息 控制日志等级和输出…

    C# 2023年5月15日
    00
  • C#二维数组与多维数组的具体使用

    C#二维数组与多维数组的具体使用 在 C# 语言中,数组是一种重要的数据类型,能够存储多个同类型的元素。二维数组和多维数组具有相似的用法,但有着不同的实现方式和适用场景。 二维数组 二维数组的定义 在 C# 中,定义一个二维数组需要指定它的行数和列数。下面是一个定义了一个 3 行 4 列的整型数组的例子: int[,] myArray = new int[3…

    C# 2023年6月7日
    00
  • 使用C#实现基于TCP和UDP协议的网络通信程序的基本示例

    下面我会为您详细讲解如何使用C#实现基于TCP和UDP协议的网络通信程序的基本示例。 一、基本概念介绍 在开始编写网络应用程序之前,需要我们明确一些基本的概念。- TCP协议: 传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层协议,常用于HTTP/HTTPS、SMTP、POP3等应用层协议…

    C# 2023年6月7日
    00
  • ASP.NET 实现验证码以及刷新验证码的小例子

    ASP.NET 是一种基于微软 .NET 框架的Web开发技术,其中验证功能是Web开发过程中非常重要的一部分,其作用是防止恶意攻击和不良行为。而验证码(Captcha)就是一种常见的验证方式,通过输出一些图形内容或者文字内容让用户识别并输入,从而检查用户身份。 ASP.NET 的验证码实现步骤: 1.在后端代码中生成随机数,并保存到Session中: st…

    C# 2023年5月31日
    00
  • C#文件操作的简单实例

    我们来详细讲解一下”C#文件操作的简单实例”攻略。 概览 在C#中,文件操作主要包含5部分内容: 创建文件(Create File) 写入文件(Write to File) 读取文件(Read File) 删除文件(Delete File) 复制文件(Copy File) 下面我们将逐一介绍这些操作。 创建文件 我们可以使用File类的Create方法创建一…

    C# 2023年6月7日
    00
  • .net core利用PdfSharpCore操作PDF实例教程

    以下是关于“.NET Core 利用 PdfSharpCore 操作 PDF 实例教程”的完整攻略: 1. 准备工作 在使用 PdfSharpCore 操作 PDF 之前,进行准备工作: 安装 .NET Core SDK。 安装 PdfSharpCore NuGet 包。 2. 创建 PDF 文件 要创建 PDF 文件,可以使用 PdfSharpCore 库…

    C# 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部