C#实现加密的几种方法介绍

C#实现加密的几种方法介绍

在C#中实现加密的方法有很多,本文将介绍其中的几种常用方法。

1. 对称加密算法

对称加密算法是指加密和解密使用同一密钥的加密算法。常用的对称加密算法有DES、3DES、AES等。

1.1 DES加密算法

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

public static string DES_Encrypt(string str, string key)
{
    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    byte[] inputByteArray = Encoding.UTF8.GetBytes(str);
    des.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8));
    des.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8));
    MemoryStream ms = new MemoryStream();
    CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();
    StringBuilder sb = new StringBuilder();
    foreach (byte b in ms.ToArray())
    {
        sb.AppendFormat("{0:X2}", b);
    }
    return sb.ToString();
}

1.2 AES加密算法

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

public static string AES_Encrypt(string str, string key)
{
    byte[] keyArray = Encoding.UTF8.GetBytes(key);
    RijndaelManaged rDel = new RijndaelManaged();
    rDel.Key = keyArray;
    rDel.Mode = CipherMode.ECB;
    rDel.Padding = PaddingMode.PKCS7;
    ICryptoTransform cTransform = rDel.CreateEncryptor();
    byte[] inputByteArray = Encoding.UTF8.GetBytes(str);
    byte[] resultArray = cTransform.TransformFinalBlock(inputByteArray, 0, inputByteArray.Length);
    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

2. 非对称加密算法

非对称加密算法是指加密和解密使用不同密钥的加密算法。常用的非对称加密算法有RSA算法。

2.1 RSA加密算法

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

public static string RSA_Encrypt(string xmlPublicKey, string content)
{
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    rsa.FromXmlString(xmlPublicKey);
    byte[] inputByteArray = Encoding.UTF8.GetBytes(content);
    byte[] resultArray = rsa.Encrypt(inputByteArray, false);
    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

示例演示

示例1:对称加密算法DES加密

string plainText = "这是一段明文";
string key = "11111111";
string encryptedText = DES_Encrypt(plainText, key);
Console.WriteLine("加密后的密文:{0}", encryptedText);

示例2:非对称加密算法RSA加密

string plainText = "这是一段明文";
string xmlPublicKey = "<RSAKeyValue><Modulus>...</Modulus><Exponent>65537</Exponent></RSAKeyValue>";
string encryptedText = RSA_Encrypt(xmlPublicKey, plainText);
Console.WriteLine("加密后的密文:{0}", encryptedText);

以上就是C#实现加密的几种常用方法的介绍。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现加密的几种方法介绍 - Python技术站

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

相关文章

  • 解决jQuery uploadify在非IE核心浏览器下无法上传

    解决 jQuery uploadify 在非 IE 核心浏览器下无法上传,可以通过以下步骤实现: 1. 原因 非 IE 核心浏览器(如 Chrome、Firefox 等)不允许跨域上传文件,而 uploadify 默认使用了 flash 进行文件上传,flash 模式下不能跨域上传,导致文件上传失败。 2. 解决方案 可以通过以下两种方式来解决这个问题: 2…

    C# 2023年5月31日
    00
  • C# 实现与现有.NET事件桥接简单实例

    接下来我将为你详细讲解 “C# 实现与现有.NET事件桥接简单实例”的完整攻略。主要包括以下两个步骤: 步骤一:桥接现有.NET事件 C# 中实现与现有.NET事件桥接的方式,是通过使用 delegate 委托类型和 event 事件类型来实现的。 1.1 创建一个委托类型 public delegate void MyEventHandler(object…

    C# 2023年5月31日
    00
  • C#初始化数组的方法小结

    C#初始化数组的方法小结 在C#中,有多种方式可以初始化数组。在本文中,我们将会介绍以下几种方法。 直接初始化 我们可以在定义数组时直接对数组元素进行初始化。例如,下面的代码定义了一个长度为3的整型数组,并将其直接初始化为1、2、3三个元素。 int[] arr = new int[3] {1, 2, 3}; 如果我们知道了数组的元素数量或者是元素的具体取值…

    C# 2023年6月7日
    00
  • C#中闭包概念讲解

    C#中闭包概念讲解 什么是闭包 闭包是指一个函数能访问其自身范围之外的变量,并使这些变量的值在函数内被保持和使用。在C#中,闭包可以简单地理解为一个函数内访问外部变量。 C#中闭包的使用 在C#中,闭包主要通过lambda表达式、委托和匿名方法实现。下面将分别介绍各种方法的使用。 使用lambda表达式实现闭包 lambda表达式是一种匿名函数,其可以访问其…

    C# 2023年6月7日
    00
  • 带着问题读CLR via C#(笔记一)CLR的执行模型

    让我来详细讲解一下“带着问题读CLRviaC#(笔记一)CLR的执行模型”的完整攻略。 问题 首先,我们需要了解本文所要解决的问题是什么。本文所讨论的问题是CLR的执行模型,具体来说,就是CLR是如何执行.NET程序的。 步骤 接下来,让我们来看看解决这个问题的步骤: 阅读CLRviaC#这本书,这是一本深入讲解CLR的经典著作。 掌握CLR的执行模型,即C…

    C# 2023年5月15日
    00
  • Android实现TCP断点上传 后台C#服务接收

    服务端C#代码示例: using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; namespace TcpServerDemo { c…

    C# 2023年5月15日
    00
  • 关于C#泛型列表List的基本用法总结

    C#泛型列表List的基本用法总结 1. 什么是泛型 泛型是C#中一种强化的类型安全机制,可以将类型参数化,让代码更加通用、简洁和易于维护。 2. 泛型列表List的定义 泛型列表List是常用的数据结构之一,它可以存储一组相同类型的对象,并提供了一系列操作这些对象的方法。List中的T表示泛型参数,可以是任何类型。 List<T> list =…

    C# 2023年5月15日
    00
  • C#中DataTable实现行列转换的方法

    下面是C#中DataTable实现行列转换的方法的完整攻略。 前言 在数据处理过程中,行列转换是常见的需求之一。在C#中,我们可以使用DataTable实现行列转换并进行后续操作。本文将详细介绍如何在C#中使用DataTable来实现行列转换。 方法一:使用LINQ进行转换 使用LINQ可以实现简单方便的行列转换。 步骤一:创建DataTable 首先,我们…

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