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日

相关文章

  • Unity屏幕雪花另类实现方式示例

    Unity屏幕雪花另类实现方式示例 本文将讲解一种实现Unity屏幕雪花效果的另类方式,通过GPU粒子效果实现屏幕雪花的飘落效果。下面将分为以下几个部分进行讲解: 需要的素材和脚本 实现效果的步骤 示例说明 需要的素材和脚本 在实现过程中我们需要以下素材和脚本: 雪花样本纹理 ScreenSnowEffect.shader ScreenSnowEffect.…

    C# 2023年6月3日
    00
  • 提取HTML代码中文字的C#函数

    提取HTML代码中的文字可以通过正则表达式来实现,C#中可以使用System.Text.RegularExpressions命名空间下的Regex类来操作正则表达式。 下面是提取HTML中文字的C#函数的完整攻略: 步骤一:引用命名空间和类库 using System.Text.RegularExpressions; 步骤二:编写提取HTML中文字的函数 p…

    C# 2023年5月31日
    00
  • c# Winform同一数据源多个控件保持同步

    下面我将为您详细讲解“C# Winform同一数据源多个控件保持同步”的攻略。 1. 前言 在使用C# Winform进行开发时,我们经常会遇到这样的需求:多个控件需要绑定同一个数据源,并且需要保持同步。例如,我们要在一个表格控件和一个文本框控件中显示同一个数据集的内容,并且需要在其中任意一个控件上进行修改后,同步更新到数据源和其他控件上。这时候,我们就需要…

    C# 2023年6月1日
    00
  • .NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)

    .NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)攻略 在 .NET 中,IoC(Inversion of Control)模式是一种设计模式,它包括依赖反转(DIP)、控制反转(IoC)和依赖注入(DI)三个概念。这些概念都是为了解决应用程序中的依赖关系问题而提出的。下面将详细介绍这三个概念。 依赖反转(DIP) 依赖反转(DIP…

    C# 2023年5月17日
    00
  • asp.net使用DataSet的ReadXml读取XML文件及Stream流的方法

    下面是详细讲解“asp.net使用DataSet的ReadXml读取XML文件及Stream流的方法”的完整攻略。 使用DataSet的ReadXml读取XML文件 准备工作 首先,你需要创建一个XML文件并填充它。例如,下面是一个名为books.xml的简单XML文件。 <books> <book> <title>A S…

    C# 2023年5月31日
    00
  • .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)

    在.NET Core部署到linux(CentOS)最全解决方案,常规篇一文,我们详细讲解了传统的.NET Core部署到Linux服务器的方法,学到了Linux在虚拟机下的安装、Xshell,Xftp的使用方法、git在linux下的交互使用以及.net core在linux下的发布与运行全过程。本文讲讲解通过使用Supervisor+Nginx的组合来实…

    C# 2023年5月5日
    00
  • C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍

    C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍 1. WebRequest与WebResponse抽象类 WebRequest与WebResponse是C#中用于发送HTTP请求并获取HTTP响应的抽象类,它们的定义位于System.Net命名空间中。WebRequest对象表示一个HTTP请求的数据,并且可以使用W…

    C# 2023年6月6日
    00
  • C#面向对象之模拟实现商城购物功能

    C#面向对象模拟实现商城购物功能可以分为以下几个步骤: 1. 创建商品类(Product)及其属性 第一步我们需要创建一个商品类,用来保存商品的相关信息。在C#中,创建类非常简单,只需要使用class关键字即可,具体实现如下: class Product { // 商品名称 public string Name { get; set; } // 商品价格 p…

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