C#的加密与解密

C#的加密与解密

C#提供了多种加密与解密方式,常见的有对称加密、非对称加密和哈希算法。

对称加密

对称加密即使用相同的密钥进行加密和解密。常见的对称加密算法有DES、AES等。

示例代码:

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

public static string Encrypt(string plaintext, string key)
{
    byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);
    byte[] keyBytes = Encoding.UTF8.GetBytes(key);

    using (Aes aes = Aes.Create())
    {
        aes.Key = keyBytes;
        aes.Mode = CipherMode.ECB;

        using (ICryptoTransform encryptor = aes.CreateEncryptor())
        {
            byte[] encryptedBytes = encryptor.TransformFinalBlock(plaintextBytes, 0, plaintextBytes.Length);
            return Convert.ToBase64String(encryptedBytes);
        }
    }
}

public static string Decrypt(string ciphertext, string key)
{
    byte[] ciphertextBytes = Convert.FromBase64String(ciphertext);
    byte[] keyBytes = Encoding.UTF8.GetBytes(key);

    using (Aes aes = Aes.Create())
    {
        aes.Key = keyBytes;
        aes.Mode = CipherMode.ECB;

        using (ICryptoTransform decryptor = aes.CreateDecryptor())
        {
            byte[] decryptedBytes = decryptor.TransformFinalBlock(ciphertextBytes, 0, ciphertextBytes.Length);
            return Encoding.UTF8.GetString(decryptedBytes);
        }
    }
}

非对称加密

非对称加密算法使用公钥加密,私钥解密。常见的非对称加密算法有RSA、DSA等。

示例代码:

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

public static string Encrypt(string plaintext, RSAParameters publicKey)
{
    byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);

    using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
    {
        rsa.ImportParameters(publicKey);

        byte[] encryptedBytes = rsa.Encrypt(plaintextBytes, true);
        return Convert.ToBase64String(encryptedBytes);
    }
}

public static string Decrypt(string ciphertext, RSAParameters privateKey)
{
    byte[] ciphertextBytes = Convert.FromBase64String(ciphertext);

    using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
    {
        rsa.ImportParameters(privateKey);

        byte[] decryptedBytes = rsa.Decrypt(ciphertextBytes, true);
        return Encoding.UTF8.GetString(decryptedBytes);
    }
}

哈希算法

哈希算法将任意长度的消息压缩到固定长度的摘要中,常见的哈希算法有MD5、SHA1、SHA256、SHA512等。

示例代码:

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

public static string ComputeHash(string plaintext, HashAlgorithm algorithm)
{
    byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);

    byte[] hashBytes = algorithm.ComputeHash(plaintextBytes);
    return Convert.ToBase64String(hashBytes);
}

以上是常见的加密与解密方式的示例代码,同时也是标准的Markdown格式文本,包含了标题、代码块等内容。实际使用时,根据具体需求选择相应的算法和实现方式,确保数据的安全性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#的加密与解密 - Python技术站

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

相关文章

  • .NET Core使用HttpClient进行表单提交时遇到的问题

    下面就为大家演示如何解决“.NET Core使用HttpClient进行表单提交时遇到的问题”。 问题描述 在使用.NET Core中的HttpClient类进行表单提交时,有时会遇到以下问题: 无法正确获取POST请求的参数,导致返回错误数据 POST请求无法发送,返回HTTP 405错误 发送POST请求时,由于未正确设置请求头信息,服务器未能正确处理该…

    C# 2023年6月3日
    00
  • C#利用Task实现任务超时多任务一起执行的方法

    下面我将为你详细讲解“C#利用Task实现任务超时多任务一起执行的方法”的完整攻略。 1. 使用Task.WaitAny方法实现超时控制 在C#中,使用Task可以很方便地实现多任务并行执行,但是如果需要控制任务的执行时间,避免超时等问题,则需要使用Task.WaitAny方法。具体步骤如下: 步骤1:启动多个任务 首先,我们需要启动多个任务,让它们并行执行…

    C# 2023年6月6日
    00
  • 在asp.NET中字符串替换的五种方法第1/2页

    让我来为您详细讲解“在asp.NET中字符串替换的五种方法第1/2页”的完整攻略。 标题格式 在ASP.NET中字符串替换的五种方法 第1/2页 文本格式 在ASP.NET中,字符串替换是一个常见的任务。下面介绍ASP.NET中实现字符串替换的五种方法: 使用Replace()方法 使用正则表达式 使用StringBuilder 使用StringBuffer…

    C# 2023年6月8日
    00
  • C# Dynamic关键字之:调用属性、方法、字段的实现方法

    C#中的 dynamic 关键字可以让我们在运行时动态地解析和调用对象的属性、方法、字段等成员,而不需要在编译时就确定这些成员的类型。这在某些情况下非常有用,例如调用不确定类型的第三方库、解析动态生成的代码等。 下面是关于如何使用 dynamic 关键字调用属性、方法、字段的实现方法: 1. 确定类型 在使用 dynamic 关键字之前,我们需要先确定被操作…

    C# 2023年6月1日
    00
  • C#开源的AOP框架–KingAOP基础

    简介 KingAOP 是一款开源的 C# AOP 框架,基于 Castle DynamicProxy 实现,提供了一套功能强大、易于使用、可扩展的 AOP 解决方案。KingAOP 支持对任意类型的任意方法(包括私有方法)进行代理,并且支持多种拦截器模式,可以满足大多数 AOP 场景的需求。 安装 KingAOP 要使用 KingAOP,需要先安装它。Kin…

    C# 2023年6月1日
    00
  • C# .NET创建虚拟目录的方法详解

    C# .NET创建虚拟目录的方法详解 当我们需要在 IIS 中创建虚拟目录时,可以利用 C# .NET 中的 Microsoft.Web.Administration 命名空间来实现。该命名空间提供了访问 IIS 的 API,可以通过代码创建、删除和修改虚拟目录等功能。 步骤一:添加引用 在开始之前,需要添加 Microsoft.Web.Administra…

    C# 2023年6月3日
    00
  • ASP.NET MVC3手把手教你构建Web

    “ASP.NET MVC3手把手教你构建Web”是一篇教程,它旨在指导读者使用ASP.NET MVC3框架来构建Web应用程序。本教程详细介绍了使用MVC模式设计Web应用程序的各个方面,包括模型、视图和控制器。 下面是该教程的完整攻略: 介绍 在本教程中,我们将使用ASP.NET MVC3框架来创建一个简单的Web应用程序。在这个过程中,我们将介绍MVC模…

    C# 2023年6月3日
    00
  • c#使用windows服务更新站点地图的详细示例

    下面是“c#使用windows服务更新站点地图的详细示例”的完整攻略,本文将由以下几部分组成:需求分析、技术选型、开发流程和实现示例。 需求分析 我们需求是实现一个使用 Windows 服务来自动更新网站地图(SiteMap)的功能。这个服务需要能够自动遍历网站,根据业务逻辑生成站点地图,并更新网站。在此基础上,我们可以选择以特定的时间间隔来调度这个服务。 …

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