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日

相关文章

  • AOP从静态代理到动态代理(Emit实现)详解

    AOP从静态代理到动态代理(Emit实现)详解 概述 AOP(面向切面编程)是一种程序设计思想,可以在不改变原有代码逻辑的情况下,通过在程序中动态地新增一些逻辑代码,来实现例如日志记录、权限控制、性能监测等功能。而在 AOP 中,一个被增强的方法称为“切入点”,对该切入点进行增强的代码称为“切面”。 在实现 AOP 功能时,静态代理和动态代理是两种比较常见的…

    C# 2023年6月6日
    00
  • .NET中保证线程安全的高级方法Interlocked类使用介绍

    Interlocked类是.NET Framework中保证线程安全的高级方法之一,其主要提供了一系列原子操作,用于保护资源的访问并防止数据竞争。下面将对Interlocked类进行介绍。 一、Interlocked类概述 Interlocked类是System.Threading命名空间中的一个类,包含了一组原子操作方法,该方法能够保证一个指定地址上的操作…

    C# 2023年6月7日
    00
  • C#开发微信公众号接口开发

    下面是C#开发微信公众号接口开发的完整攻略。 1. 申请微信公众号和开发者账号 要开发微信公众号接口,首先需要申请微信公众号和微信开发者账号。具体申请流程可以参考微信公众平台官方文档,申请成功后,可以在公众平台后台获取AppID和AppSecret等开发所需信息。 2. 配置开发环境和工具 要进行C#开发微信公众号接口,需要配置相应的开发环境和工具,具体包括…

    C# 2023年5月31日
    00
  • C#实现Winform版计算器

    这里是C#实现Winform版计算器的完整攻略: 1. 确定项目的需求和功能 在开始任何项目之前,首先要确定项目的需求和功能,这样可以帮助我们更好地规划和实施项目。对于一个计算器,我们至少需要实现以下功能: 基本运算:加减乘除 清除:清空当前输入和结果 回退:撤销上一步输入 小数点:支持小数计算 防止错误输入:例如除以0等情况 确定以上需求和功能后,我们可以…

    C# 2023年6月6日
    00
  • WCF实现进程间管道通信Demo分享

    下面是关于“WCF实现进程间管道通信Demo分享”的完整攻略,包含两个示例。 1. 什么是进程间管道通信 进程间管道通信是一种在不同进程之间进行通信的方法。在Windows操作系统中,可以使用命名管道(Named Pipe)来实现进程间管道通信。命名管道是一种命名的、双向的、异步的、字节流管道,可以在本地或远程计算机之间进行通信。 2. WCF实现进程间管道…

    C# 2023年5月15日
    00
  • C#修改MAC地址类的实例

    首先我们需要明确一下”C#修改MAC地址类的实例”到底指什么。MAC地址是指网络适配器(网卡)上的物理地址,每张网卡都有唯一的MAC地址,它的作用是在局域网中进行唯一标识和寻址。而”C#修改MAC地址类的实例”指的是通过C#编程语言编写一个可以修改MAC地址的类,并实例化这个类,这样我们就可以在程序中使用这个类来修改MAC地址。 下面是具体的攻略: 1. 了…

    C# 2023年6月7日
    00
  • unity shader 较完整光照(含有多光源阴影)

    在Unity引擎中,开发者可以使用Shader编写自定义着色器,来实现对游戏场景中的模型、材质进行更加高级的渲染。其中,光照是Shader编写中十分重要的一个环节,一个较完整的光照着色器需要包括基础光照、多光源、阴影等要素。下面介绍一些实现这些功能的方法: 1. 基础光照 在Unity中,使用Built-in Shader中的“Surface Shader”…

    C# 2023年6月3日
    00
  • JQueryEasyUI datagrid框架的基本使用

    下面是针对JQueryEasyUI datagrid框架基本使用的完整攻略: 介绍 JQueryEasyUI datagrid是基于JQuery的UI插件。它提供了易于使用、可定制和高性能的数据表格功能,适合用于数据展示、数据查询、数据编辑等场合。操作方式类似于Excel表格,支持排序、筛选、分页等功能。本攻略将介绍JQueryEasyUI datagrid…

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