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

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日

相关文章

  • C#编程实现自定义热键的方法

    当需要在 C# 中实现自定义热键的时候,可以借助 Windows API 中的 RegisterHotKey 函数来实现。以下是实现自定义热键的详细攻略。 步骤一:定义常量 在 C# 代码文件的顶部定义以下常量: public const int WM_HOTKEY = 0x0312; public const int MOD_ALT = 0x0001; p…

    C# 2023年6月6日
    00
  • C# DateTime.AddMonths()方法: 将指定的月份数加到指定的日期上

    C#中DateTime.AddMonths()的作用与使用方法 AddMonths方法是DateTime类中提供的一个方法,用于在当前DateTime对象上增加指定数量的月份。它的具体格式如下: public DateTime AddMonths(int months); 其中参数months表示要增加的月份数量,可以是正数、零或负数。正数表示当前时间的月份…

    C# 2023年4月19日
    00
  • C# 重写Notification提示窗口的示例代码

    下面是详细讲解“C# 重写Notification提示窗口的示例代码”的完整攻略: 一、什么是Notification提示窗口 Notification提示窗口就是Windows操作系统的一个提示框,一般用于通知用户系统的一些状态变化或提示信息。它一般弹出在屏幕的右下角,显示一定的时间之后会自动消失。 二、怎样重写Notification提示窗口 要重写No…

    C# 2023年6月7日
    00
  • 武装你的WEBAPI-OData Versioning

    本文属于OData系列 目录 武装你的WEBAPI-OData入门 武装你的WEBAPI-OData便捷查询 武装你的WEBAPI-OData分页查询 武装你的WEBAPI-OData资源更新Delta 武装你的WEBAPI-OData之EDM 武装你的WEBAPI-OData常见问题 武装你的WEBAPI-OData使用Endpoint 武装你的WEBAP…

    C# 2023年5月5日
    00
  • c#的sortedlist使用方法

    C# SortedList使用方法 简介 C#中的SortedList是一种有序的泛型集合,它根据键的范围对键值对进行排序,且支持快速查找。深入了解SortedList的使用方法,可以帮助我们更好地处理数据集合。 创建SortedList实例 在使用SortedList前,我们需要创建一个SortedList的实例。创建实例的方式如下: SortedList…

    C# 2023年5月31日
    00
  • jquery1.4 教程二 ajax方法的改进

    jQuery是一种流行的JavaScript库,用于简化JavaScript编程。其中,ajax方法是jQuery中最常用的方法之一,用于向服务器发送异步请求。本文将提供详细的“jquery1.4教程二ajax方法的改进”的完整攻略,包括什么是ajax方法、ajax方法的改进以及两个示例。 什么是ajax方法? ajax方法是jQuery中最常用的方法之一,…

    C# 2023年5月15日
    00
  • WPF实现可视化扫码器的示例代码

    下面是针对“WPF实现可视化扫码器的示例代码”的完整攻略。 确定需求 首先需要明确我们要实现的功能,即实现一个可视化的扫码器。具体地说,我们需要以下功能: 打开摄像头并开始录像 在程序界面中实时显示视频流,并同时进行二维码的扫描 扫描到二维码后,弹出提示并将二维码信息显示在界面上 支持暂停和继续录像的操作 确定技术选型 由于我们需要实时显示视频,并对视频流进…

    C# 2023年6月6日
    00
  • asp.net 细说文件读写操作(读写锁)

    ASP.NET细说文件读写操作(读写锁) 介绍 在ASP.NET应用程序中,文件读写操作是很常见的场景,但是如果多个线程同时访问同一个文件并执行读写操作,就有可能会引起线程安全问题,进而导致应用程序崩溃或数据丢失等问题。为了确保线程安全,我们需要采用读写锁来控制文件的访问。本文将详细讲解ASP.NET应用程序中如何实现文件读写操作,并介绍读写锁的使用。 文件…

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