c#多种加解密示例(md5加密解密)

针对“c#多种加解密示例(md5加密解密)”问题,以下是完整攻略:

一、什么是MD5加密?

MD5是一种单向加密算法,将任意长度的数据(字节序列)作为输入,通过一系列数学运算,得到一个固定长度(128位)的输出,即MD5值。这个过程是不可逆的,不能通过MD5值还原原来的输入数据,称为单向加密。MD5广泛应用于密码保护、文件校验等领域。

二、如何在c#中实现MD5加密?

下面是c#示例代码实现MD5加密:

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

public static string MD5Encoding(string origin)
{
    byte[] bytes = Encoding.UTF8.GetBytes(origin);
    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
    byte[] targetBytes = md5.ComputeHash(bytes);
    string targetString = BitConverter.ToString(targetBytes).Replace("-", "").ToUpper();
    return targetString;
}

示例说明:输入一个字符串,得到该字符串的MD5值,输出为字符串类型。上述代码采用了MD5CryptoServiceProvider类实现MD5加密,调用ComputeHash()方法生成摘要信息(该方法返回byte数组),最后用BitConverter.ToString()方法将byte数组转换为字符串,并通过ToUpper()方法将字符串转换为大写形式。注意:在使用MD5加密时,需要指定输入数据的编码格式,这里采用UTF-8编码格式。

三、多种加解密示例

除了MD5加密,常用的加密算法还有对称加密算法(如AES、DES)、非对称加密算法(如RSA)等。下面给出两条示例:

1. AES加解密

AES加密算法是一种对称加密算法,既加密、又解密,常用于对敏感数据加密。下面是c#示例代码实现AES加解密:

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

public static string AESEncoding(string origin, string key, string iv)
{
    byte[] keyBytes = Encoding.UTF8.GetBytes(key);
    byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
    byte[] bytes = Encoding.UTF8.GetBytes(origin);
    AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
    aes.Key = keyBytes;
    aes.IV = ivBytes;
    aes.Padding = PaddingMode.PKCS7;
    aes.Mode = CipherMode.CBC;
    ICryptoTransform transform = aes.CreateEncryptor(aes.Key, aes.IV);
    byte[] targetBytes = transform.TransformFinalBlock(bytes, 0, bytes.Length);
    string targetString = Convert.ToBase64String(targetBytes);
    return targetString;
}

public static string AESDecoding(string origin, string key, string iv)
{
    byte[] keyBytes = Encoding.UTF8.GetBytes(key);
    byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
    byte[] bytes = Convert.FromBase64String(origin);
    AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
    aes.Key = keyBytes;
    aes.IV = ivBytes;
    aes.Padding = PaddingMode.PKCS7;
    aes.Mode = CipherMode.CBC;
    ICryptoTransform transform = aes.CreateDecryptor(aes.Key, aes.IV);
    byte[] targetBytes = transform.TransformFinalBlock(bytes, 0, bytes.Length);
    string targetString = Encoding.UTF8.GetString(targetBytes);
    return targetString;
}

示例说明:输入一个字符串和AES秘钥、偏移量,得到该字符串的AES加密结果,或者输入一个AES加密字符串和秘钥、偏移量,得到加密字符串的解密结果。

2. RSA加解密

RSA加密算法是一种非对称加密算法,既可以用于加密、也可以用于解密,常用于数字签名、密钥协商等场景。下面是c#示例代码实现RSA加解密:

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

public static string RSAEncoding(string origin, string publicKey)
{
    byte[] bytes = Encoding.UTF8.GetBytes(origin);
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    rsa.FromXmlString(publicKey);
    byte[] targetBytes = rsa.Encrypt(bytes, false);
    string targetString = Convert.ToBase64String(targetBytes);
    return targetString;
}

public static string RSADecoding(string origin, string privateKey)
{
    byte[] bytes = Convert.FromBase64String(origin);
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    rsa.FromXmlString(privateKey);
    byte[] targetBytes = rsa.Decrypt(bytes, false);
    string targetString = Encoding.UTF8.GetString(targetBytes);
    return targetString;
}

示例说明:输入一个字符串和RSA公钥,得到该字符串的RSA加密结果,或者输入一个RSA加密字符串和私钥,得到加密字符串的RSA解密结果。

以上就是“c#多种加解密示例(md5加密解密)”的完整攻略,希望能够对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#多种加解密示例(md5加密解密) - Python技术站

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

相关文章

  • C#中winform实现自动触发鼠标、键盘事件的方法

    实现自动触发鼠标、键盘事件的方法可以通过在C#中使用winform中的SendKeys和Mouse类实现。以下是具体步骤: 步骤一:向项目中添加Windows.Forms引用 在Visual Studio中打开项目,右键点击“引用”文件夹,选择“添加引用”。在弹出的对话框中找到“框架”选项卡,勾选“System.Windows.Forms”选项,点击“确定”…

    C# 2023年6月6日
    00
  • C#探秘系列(一)——ToDictionary,ToLookup

    C#探秘系列(一)——ToDictionary,ToLookup 概述 ToDictionary和ToLookup都是基于IEnumerable的扩展方法,可以将IEnumerable转换为Dictionary和ILookup。两个方法所能承载的数据结构不同,具体使用也有细微差别,下面我们来逐一讲解。 ToDictionary 描述 ToDictionary…

    C# 2023年5月15日
    00
  • Netcore磊科路由器无线MAC地址过滤图解教程

    Netcore磊科路由器无线MAC地址过滤图解教程如下: 步骤一:登录路由器 首先,需要登录到 Netcore 磊科路由器的管理界面。在浏览器中输入路由器的 IP 地址,然后输入用户名和密码进行登录。 步骤二:进入无线设置页面 在登录成功后,进入路由器的无线设置页面。在页面中找到“MAC地址过滤”选项,并点击进入。 步骤三:启用MAC地址过滤 在“MAC地址…

    C# 2023年5月17日
    00
  • C#中decimal保留2位有效小数的实现方法

    以下是 “C#中decimal保留2位有效小数的实现方法”的完整攻略: 1. 格式化输出 C#中decimal类型可以使用ToString方法转化为字符串,将其作为参数传递给Format方法进行格式化输出。使用“0.00”作为格式化字符串可将decimal类型的值转化为保留两位小数的字符串,如下所示: decimal price = 12.3456m; st…

    C# 2023年6月1日
    00
  • VB.net 查询获取数据库数据信息

    下面为你详细讲解“VB.net 查询获取数据库数据信息”的完整攻略,包含以下步骤: 连接数据库 编写查询语句并执行 处理查询结果 连接数据库 在使用VB.net查询获取数据库数据信息之前,需要先连接数据库。连接数据库有多种方法,这里介绍使用 ADO.NET 连接 Microsoft SQL Server 数据库的方法。具体步骤如下: 在VB.net 项目中添…

    C# 2023年5月31日
    00
  • asp.net中c#自定义事件的实现方法详解

    下面是关于“asp.net中c#自定义事件的实现方法详解”的完整攻略: 1.什么是自定义事件? 在C#中,事件是一种对象,它用于发现并应答来自其他对象或应用程序的操作和请求。这种情况下,事件的发生通常由一个委托来表示,这个委托实际上是一组方法。自定义事件是自己创建委托和事件处理程序的机会,使事件和同一应用程序中其他组件的使用更加方便。 2.创建自定义事件 要…

    C# 2023年5月31日
    00
  • .Net中的Http请求调用详解(Post与Get)

    在.NET中,可以使用HttpClient类来进行HTTP请求调用。HttpClient类提供了一种简单而灵活的方式来发送HTTP请求并处理响应。下面是在.NET中使用HttpClient类进行HTTP请求调用的完整攻略: 步骤1:创建HttpClient对象 在.NET中,可以使用HttpClient类来发送HTTP请求。要创建HttpClient对象,可…

    C# 2023年5月12日
    00
  • C#事件中关于sender的用法解读

    当我们定义一个事件时,必须要在事件的定义中指定sender参数。sender参数表示事件的触发者,用于在事件处理中判断事件的来源。 在事件的处理中,可以利用sender参数来获取事件的触发者,进行相应的处理。 下面我们通过代码示例来详细讲解C#事件中关于sender的用法。 示例1 public class MyEventArgs : EventArgs {…

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