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日

相关文章

  • redis字符串类型_动力节点Java学院整理

    Redis字符串类型 简介 Redis字符串类型是Redis五种基本数据类型之一,存储的数据类型为二进制安全的字符串。字符串类型可以理解为将所有无法序列化存储的数据全部转换成字符串,比较灵活。 常用命令 Redis字符串类型的常用命令有: SET key value:将字符串键key设定为对应的value值。 GET key:获取字符串键key的对应的val…

    C# 2023年6月7日
    00
  • ASP.NET Core使用EF创建模型(必需和可选属性、最大长度、并发标记、阴影属性)

    在 ASP.NET Core 中,可以使用 Entity Framework (EF) 来创建模型。EF 是一个 ORM 框架,可以将数据库中的表映射到 C# 类中。以下是 ASP.NET Core 中使用 EF 创建模型的完整攻略: 步骤一:安装 EF 在使用 EF 前,需要在 ASP.NET Core 项目中安装 EF。可以使用 NuGet 包管理器或者…

    C# 2023年5月17日
    00
  • 详解ASP.NET Core 之 Identity 入门(二)

    下面是“详解ASP.NET Core 之 Identity 入门(二)”的完整攻略: 什么是ASP.NET Core Identity ASP.NET Core Identity是一个用于管理用户、角色和权限的框架。它提供了一组API和UI组件,可以轻松地将身份验证和授权功能集成到ASP.NET Core应用程序中。 如何使用ASP.NET Core Ide…

    C# 2023年5月16日
    00
  • 在C#中使用SQLite数据库

    轻量级桌面程序数据库不太适合用SQLServer、MySQL之类的重量级数据库,嵌入式数据库更好。在对比Access、SQLite、Firebird数据库后发现SQLite较另外两个有较多优点。 环境:.NET Framework 3.5、windows11 64位、Visual Studio 2010. C#使用SQLite需要从SQLite官网下载DLL…

    C# 2023年4月24日
    00
  • C# 汉字转拼音实例(支持GB2312字符集中所有汉字)

    下面我来详细讲解“C# 汉字转拼音实例(支持GB2312字符集中所有汉字)”的完整攻略。 1. 需求分析 我们需要实现一个汉字转拼音的功能,它需要支持GB2312字符集中所有汉字,那么首先我们需要找到一个支持GB2312字符集的汉字库,这个库需要包含每个汉字的拼音以及其他相关信息。 2. 实现方案 我们可以使用第三方库 Pinyin4net 来实现汉字转拼音…

    C# 2023年6月7日
    00
  • C#适用于like语句的SQL格式化函数

    当我们在使用SQL语句查询一些字符串字段时,经常使用like语句进行模糊匹配。而在使用C#编写的程序中,我们通常需要将查询结果装载到某个类中,以便于后面的数据处理。这时,如果采用了字符串拼接的方式生成SQL语句,不仅不够安全,而且也不方便后续的操作,此时我们就需要借助“C#适用于like语句的SQL格式化函数”来处理SQL语句。 Step 1. 安装Dapp…

    C# 2023年6月7日
    00
  • 自定义时间格式转换代码分享

    下面是“自定义时间格式转换代码分享”的完整攻略: 目录 背景介绍 代码实现 示例说明 示例1 示例2 总结 背景介绍 在日常开发中,我们常常需要将日期时间按照一定的格式进行转换,以满足不同场景下的需求。例如在前端页面中展示时间、统计用户访问量时需要记录访问时间等等。JavaScript中提供了多种日期时间格式转换的函数,如toLocaleString()、D…

    C# 2023年6月1日
    00
  • C#连接Informix数据库的问题

    使用C#连接Informix数据库的过程可以分为以下几个步骤: 步骤一:安装Informix客户端SDK Informix客户端SDK包括ODBC和 .NET 数据提供程序等。可以从IBM官网下载对应版本的SDK,安装并配置。 步骤二:创建Informix数据库连接字符串 在C#中,可以通过连接字符串来与Informix数据库建立连接。根据个人需要可以选择使…

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