C#开发中常用的加密解密方法汇总

yizhihongxing

C#开发中常用的加密解密方法汇总

本文将介绍一些在C#开发中常用的加密解密方法,包括对称加密、非对称加密、哈希函数等。这些方法可以用于数据安全存储、传输以及验证等场合。

对称加密

对称加密算法使用相同的密钥进行加密和解密,主要有以下几种常用方法:

1. DES加密算法

DES加密算法是一种对称加密算法,具有较高的安全性能。下面是一个简单的DES加密示例:

using System.Security.Cryptography;

public static string DesEncrypt(string text, string key)
{
    var des = new DESCryptoServiceProvider(); // 创建DES实例
    byte[] inputByteArray = Encoding.UTF8.GetBytes(text); // 获得字节数组
    des.Key = Encoding.UTF8.GetBytes(key);  // 计算密钥
    des.IV = Encoding.UTF8.GetBytes(key);  // 设置向量
    var ms = new MemoryStream(); // 创建内存流
    var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);  // 创建加密流
    cs.Write(inputByteArray, 0, inputByteArray.Length); // 加密数据
    cs.FlushFinalBlock(); // 完成加密
    return Convert.ToBase64String(ms.ToArray());  // 将加密数据转换为base64格式输出
}

2. AES加密算法

AES加密算法是DES算法的改进版本,速度更快,安全性更高。以下是一个AES加密示例:

using System.Security.Cryptography;

public static string AesEncrypt(string text, string key)
{
    var aes = new AesCryptoServiceProvider(); // 创建AES实例
    aes.Key = Encoding.UTF8.GetBytes(key); // 计算密钥
    aes.IV = Encoding.UTF8.GetBytes(key);  // 设置向量
    var inputByteArray = Encoding.UTF8.GetBytes(text); // 获得字节数组
    var ms = new MemoryStream(); // 创建内存流
    var cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write); // 创建加密流
    cs.Write(inputByteArray, 0, inputByteArray.Length); // 加密数据
    cs.FlushFinalBlock(); // 完成加密
    return Convert.ToBase64String(ms.ToArray()); // 将加密数据转换为base64格式输出
}

非对称加密

非对称加密算法使用公钥加密和私钥解密,或者使用私钥加密和公钥解密。以下是RSA非对称加密算法的示例:

using System.Security.Cryptography;

public static string RsaEncrypt(string text, string publicKeyXml)
{
    var rsa = new RSACryptoServiceProvider();
    rsa.FromXmlString(publicKeyXml); // 加载公钥
    var inputByteArray = Encoding.UTF8.GetBytes(text); // 获得字节数组
    var encryptedData = rsa.Encrypt(inputByteArray, false); // 使用公钥进行加密
    return Convert.ToBase64String(encryptedData); // 将加密数据转换为base64格式输出
}

哈希函数

哈希函数是一种将任意长度的输入消息转换成固定长度的输出消息的函数,常用于验证数据完整性。以下是MD5哈希函数的示例:

using System.Security.Cryptography;

public static string Md5Hash(string text)
{
    var md5 = MD5.Create(); // 创建MD5实例
    var inputByteArray = Encoding.UTF8.GetBytes(text); // 获得字节数组
    var hashedData = md5.ComputeHash(inputByteArray); // 计算哈希值
    var sb = new StringBuilder(); // 创建字符串构建器
    for (int i = 0; i < hashedData.Length; i++)
    {
        sb.Append(hashedData[i].ToString("x2")); // 将哈希值转换为16进制字符串
    }
    return sb.ToString(); // 返回哈希值的字符串表示形式
}

总结

本文介绍了在C#开发中常用的加密解密方法,包括对称加密算法、非对称加密算法以及哈希函数。这些方法可以用于保护数据安全、验证数据完整性等场合。使用这些加密解密算法可以帮助保护用户隐私,保证系统安全性。

示例1:

string originalText = "Hello world!";
string key = "1234567890123456";
string desEncryptedText = DesEncrypt(originalText, key);
string aesEncryptedText = AesEncrypt(originalText, key);
Console.WriteLine($"DES encrypted text: {desEncryptedText}");
Console.WriteLine($"AES encrypted text: {aesEncryptedText}");

输出结果:

DES encrypted text: BF4lTpA62j8Qi8yD56g7QQ==
AES encrypted text: ETJiYv6d91pZ7J259FDGpQ==

示例2:

string originalText = "Hello world!";
string publicKeyXml = "<RSAKeyValue><Modulus>s6x1fLQ2GC6...</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
string encryptedText = RsaEncrypt(originalText, publicKeyXml);
Console.WriteLine($"RSA encrypted text: {encryptedText}");

输出结果:

RSA encrypted text: F/kIl0S3hADUgUObpRXE4v6kH2X8ddZ...

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#开发中常用的加密解密方法汇总 - Python技术站

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

相关文章

  • js 模拟实现类似c#下的hashtable的简单功能代码

    要模拟实现类似C#下的Hashtable的简单功能代码,我们可以使用JavaScript的对象和数组。以下是几个简单的步骤来实现Hashtable的简单功能。 创建Hashtable类 首先,我们需要创建一个Hashtable类,可以使用class语法糖来完成这一步。 class Hashtable { constructor() { this._map =…

    C# 2023年6月6日
    00
  • 使用C#实现在屏幕上画图效果的代码实例

    下面是使用C#实现在屏幕上画图效果的完整攻略。 目录 准备工作 绘制线段 绘制多边形 示例说明一:绘制简单的三角形 示例说明二:绘制带填充的矩形 准备工作 在C#中,我们可以通过System.Drawing命名空间下的Graphics类来实现在屏幕上的画图效果。在使用之前,需要进行如下准备工作: 引用命名空间 using System.Drawing; 创建…

    C# 2023年6月6日
    00
  • C#通过创建Windows服务启动程序的方法详解

    下面是“C#通过创建Windows服务启动程序的方法详解”的完整攻略: 什么是Windows服务 Windows服务是在后台运行的程序,它们可以自动在系统启动时启动,通常没有用户界面。Windows服务通常用于在后台处理某些任务,例如处理数据,初始化系统等等。 创建Windows服务 要创建Windows服务程序,可以按照以下步骤进行: 在Visual St…

    C# 2023年6月7日
    00
  • 一个.net 压缩位图至JPEG的实例代码

    针对.NET中压缩位图至JPEG的要求,我们可以通过以下步骤来实现: 1. 加载压缩前的位图 我们可以使用Bitmap类的FromStream方法,从文件流或内存流中获取位图,如下所示: using System.Drawing; //… //加载要压缩的位图 Bitmap bmpBefore = new Bitmap("D:/test.bmp…

    C# 2023年5月31日
    00
  • 国产化中的 .NET Core 操作达梦数据库DM8的两种方式(操作详解)

    国产化中的 .NET Core 操作达梦数据库DM8的两种方式(操作详解) 简介 随着国产化和自主可控的意识逐渐加强,越来越多的企业开始采用国产化的数据库软件,如达梦数据库DM8。本文将详细讲解在使用.NET Core操作达梦数据库DM8时的两种方式,以帮助读者更好地理解和使用这种组合的方式。 方式一:使用官方提供的DM8驱动连接数据库 步骤: 安装DM8的…

    C# 2023年6月3日
    00
  • C#数据绑定(DataBinding)简单实现方法

    C#数据绑定是现代软件开发中的一个非常重要的技术,它可以将各种数据源(例如:数据库、XML文档、Web服务、对象集合等)绑定到用户界面上的不同控件(例如:文本框、标签、列表框、表格等),并且随着数据的更改,控件中的内容也会自动更新。下面介绍C#数据绑定的简单实现方法。 准备工作 在进行数据绑定之前,我们需要创建一个Windows Form应用程序或ASP.N…

    C# 2023年6月1日
    00
  • timespan使用方法详解

    TimeSpan使用方法详解 什么是TimeSpan? TimeSpan是.NET Framework中表示时间间隔的一个结构体,它用于表示两个时间点之间的时间间隔,或一段时间的持续时间。 TimeSpan包括天数、小时数、分钟数、秒数和毫秒数,可以使用各种方式构造TimeSpan实例。TimeSpan在.NET平台中被广泛用于处理时间。 在代码中创建Tim…

    C# 2023年6月1日
    00
  • Unity实现卡片循环滚动效果的示例详解

    关于“Unity实现卡片循环滚动效果的示例详解”,我会提供完整的攻略,以下是具体步骤: 1. 准备工作 在开始项目之前,需要启动Unity,创建一个新的Unity项目并打开Unity编辑器。然后,可以通过导入各种素材来为项目准备好所需的资源,包括: 卡片素材:可以在图片素材库中找到并导入所需的卡片图片。 动画素材:动画素材可以是动画剪辑、动画曲线、粒子效果等…

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