C#字符串加密解密方法实例

C#字符串加密解密方法实例

背景

在对程序进行开发时,有时候需要对一些敏感数据进行加密,以保证数据安全。在C#中,有许多方法来实现字符串的加密解密。

对称加密

对称加密是最常用的一种加密方式,加密和解密使用相同的密钥。常见的对称加密算法有DES、AES和IDEA等。

加密方法示例

下面是一段使用AES加密算法对明文进行加密的示例代码:

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

public static string AESEncrypt(string plainText, byte[] key, byte[] iv)
{
    using (Aes aes = Aes.Create())
    {
        aes.Key = key;
        aes.IV = iv;

        ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);

        using (MemoryStream ms = new MemoryStream())
        {
            using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
            {
                using (StreamWriter sw = new StreamWriter(cs))
                {
                    sw.Write(plainText);
                }
            }
            byte[] encrypted = ms.ToArray();
            return Convert.ToBase64String(encrypted);
        }
    }
}

解密方法示例

下面是一段使用AES解密算法对密文进行解密的示例代码:

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

public static string AESDecrypt(string encryptedText, byte[] key, byte[] iv)
{
    using (Aes aes = Aes.Create())
    {
        aes.Key = key;
        aes.IV = iv;

        ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);

        using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(encryptedText)))
        {
            using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
            {
                using (StreamReader sr = new StreamReader(cs))
                {
                    return sr.ReadToEnd();
                }
            }
        }
    }
}

非对称加密

非对称加密是一种最常用的公钥加密方式,也称为公钥密码学,加密和解密使用不同的密钥。常见的非对称加密算法有RSA、DSA和ECC等。

加密方法示例

下面是一段使用RSA算法对明文进行加密的示例代码:

using System;
using System.Security.Cryptography;
using System.Text;

public static string RSAEncrypt(string plainText, string publicKeyXml)
{
    using (RSACryptoServiceProvider provider = new RSACryptoServiceProvider())
    {
        provider.FromXmlString(publicKeyXml);

        byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
        byte[] encryptedBytes = provider.Encrypt(plainBytes, false);

        return Convert.ToBase64String(encryptedBytes);
    }
}

解密方法示例

下面是一段使用RSA算法对密文进行解密的示例代码:

using System;
using System.Security.Cryptography;
using System.Text;

public static string RSADecrypt(string encryptedText, string privateKeyXml)
{
    using (RSACryptoServiceProvider provider = new RSACryptoServiceProvider())
    {
        provider.FromXmlString(privateKeyXml);

        byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
        byte[] decryptedBytes = provider.Decrypt(encryptedBytes, false);

        return Encoding.UTF8.GetString(decryptedBytes);
    }
}

总结

以上就是C#字符串加密解密的两种常见方式,具体使用哪种方式根据需求和实际情况来决定。在实际开发时,还需要注意保护密钥和加密算法的安全性,以免被攻击者利用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#字符串加密解密方法实例 - Python技术站

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

相关文章

  • .NET Core剪裁器背后的技术及工作原理介绍

    在本攻略中,我们将详细讲解.NET Core剪裁器的技术及工作原理,并提供两个示例说明。 什么是.NET Core剪裁器? .NET Core剪裁器是一种工具,可以将.NET Core应用程序中未使用的代码和依赖项从应用程序中删除,从而减小应用程序的大小。剪裁器可以根据应用程序的需求,自动删除不需要的代码和依赖项,从而减小应用程序的大小。 剪裁器的工作原理 …

    C# 2023年5月16日
    00
  • ASP.NET Core依赖注入(DI)讲解

    ASP.NET Core依赖注入(DI)讲解 ASP.NET Core依赖注入(DI)是一种设计模式,它可以帮助您管理应用程序中的对象和它们之间的依赖关系。在本攻略中,我们将详细讲解ASP.NET Core依赖注入(DI)的概念、用法和示例。 什么是依赖注入(DI) 依赖注入(DI)是一种设计模式,它可以帮助您管理应用程序中的对象和它们之间的依赖关系。在DI…

    C# 2023年5月17日
    00
  • C#生成随机数的方法小结

    C#生成随机数的方法小结 介绍 在编程中,如何生成随机数是常见的需求。C#提供了多种生成随机数的方法,本文将对这些方法进行小结介绍。 Random类 Random类是C#提供的随机数生成类,它可以生成伪随机数序列。以下是使用Random类生成随机数的示例: Random random = new Random(); int randomNumber = ra…

    C# 2023年5月31日
    00
  • C# 6.0 内插字符串(Interpolated Strings )的使用方法

    当我们需要将表达式嵌入到字符串中时,常规做法是使用字符串拼接。C# 6.0 为我们提供了内插字符串(Interpolated Strings)功能,使得我们可以更方便地将表达式嵌入到字符串中。本文将详细介绍内插字符串的使用方法。 什么是内插字符串? 在 C# 6.0 中,内插字符串是一种新的字符串语法,它允许将变量值或表达式嵌入到字符串中。内插字符串使用 $…

    C# 2023年6月3日
    00
  • [译]在C#中使用IComparable和IComparer接口

    原文:Use the IComparable and IComparer interfaces in Visual CSharp 本文介绍了在Visual C#中如何使用IComparer和IComparable接口。 概要 本文同时讨论了IComparable和IComparer接口,原因有两点。这两个接口经常一起使用。虽然接口类似且名称相似,但它们却有不…

    C# 2023年5月3日
    00
  • C#中实现网段扫描的代码

    为了实现C#中的网段扫描,你需要使用Socket类以及System.Net.NetworkInformation命名空间中的一些类和方法。以下是完整的攻略: 首先导入所需的命名空间: using System; using System.Net; using System.Net.NetworkInformation; using System.Net.So…

    C# 2023年5月31日
    00
  • DirectoryEntry配置IIS7出现ADSI Error:未知错误(0x80005000)

    问题描述: 在IIS7上配置使用DirectoryEntry连接LDAP时,可能会遇到ADSIError错误,具体表现为:”DirectoryEntry Configuration IIS7 ADSIError:未知错误(0x80005000)”。 解决方案: 确定LDAP连接使用的用户名和密码是否正确。使用错误的用户名或密码会导致连接失败。 确定连接字符串…

    C# 2023年5月15日
    00
  • winfrom 打印表格 字符串的封装实现代码 附源码下载

    下面是关于“winform打印表格字符串的封装实现代码附源码下载”的完整攻略: 一、背景介绍 在实际开发中,我们经常会遇到需要打印表格字符串的需求,例如打印报表、流水账单等等。在C#的winforms框架中,可以通过调用PrintDocument类的Print方法来实现打印功能。然而,PrintDocument类并没有提供直接打印表格字符串的方法,因此需要我…

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