C#的加密与解密

C#的加密与解密

C#提供了多种加密与解密方式,常见的有对称加密、非对称加密和哈希算法。

对称加密

对称加密即使用相同的密钥进行加密和解密。常见的对称加密算法有DES、AES等。

示例代码:

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

public static string Encrypt(string plaintext, string key)
{
    byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);
    byte[] keyBytes = Encoding.UTF8.GetBytes(key);

    using (Aes aes = Aes.Create())
    {
        aes.Key = keyBytes;
        aes.Mode = CipherMode.ECB;

        using (ICryptoTransform encryptor = aes.CreateEncryptor())
        {
            byte[] encryptedBytes = encryptor.TransformFinalBlock(plaintextBytes, 0, plaintextBytes.Length);
            return Convert.ToBase64String(encryptedBytes);
        }
    }
}

public static string Decrypt(string ciphertext, string key)
{
    byte[] ciphertextBytes = Convert.FromBase64String(ciphertext);
    byte[] keyBytes = Encoding.UTF8.GetBytes(key);

    using (Aes aes = Aes.Create())
    {
        aes.Key = keyBytes;
        aes.Mode = CipherMode.ECB;

        using (ICryptoTransform decryptor = aes.CreateDecryptor())
        {
            byte[] decryptedBytes = decryptor.TransformFinalBlock(ciphertextBytes, 0, ciphertextBytes.Length);
            return Encoding.UTF8.GetString(decryptedBytes);
        }
    }
}

非对称加密

非对称加密算法使用公钥加密,私钥解密。常见的非对称加密算法有RSA、DSA等。

示例代码:

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

public static string Encrypt(string plaintext, RSAParameters publicKey)
{
    byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);

    using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
    {
        rsa.ImportParameters(publicKey);

        byte[] encryptedBytes = rsa.Encrypt(plaintextBytes, true);
        return Convert.ToBase64String(encryptedBytes);
    }
}

public static string Decrypt(string ciphertext, RSAParameters privateKey)
{
    byte[] ciphertextBytes = Convert.FromBase64String(ciphertext);

    using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
    {
        rsa.ImportParameters(privateKey);

        byte[] decryptedBytes = rsa.Decrypt(ciphertextBytes, true);
        return Encoding.UTF8.GetString(decryptedBytes);
    }
}

哈希算法

哈希算法将任意长度的消息压缩到固定长度的摘要中,常见的哈希算法有MD5、SHA1、SHA256、SHA512等。

示例代码:

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

public static string ComputeHash(string plaintext, HashAlgorithm algorithm)
{
    byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);

    byte[] hashBytes = algorithm.ComputeHash(plaintextBytes);
    return Convert.ToBase64String(hashBytes);
}

以上是常见的加密与解密方式的示例代码,同时也是标准的Markdown格式文本,包含了标题、代码块等内容。实际使用时,根据具体需求选择相应的算法和实现方式,确保数据的安全性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#的加密与解密 - Python技术站

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

相关文章

  • C# 常量 结构体 委托

    常量 const double PI = 3.1415926; 常量名命名一般使用大写字母 枚举类型 开发一个游戏,游戏角色有法师(Mage)、射手(Archer)、刺客(Assassin)、坦克(Tank)、铺助(Support)、战士(Warrior),等不同类型。 ❓如何存储游戏角色 使用int类型 :创建一套规则,提前为各个类型角色绑定一个数字标识 …

    C# 2023年5月6日
    00
  • C#中定时任务被阻塞问题的解决方法

    非常感谢您对C#定时任务的关注。在C#中实现定时任务有很多种方式,例如使用定时器、后台线程等,但是在实际开发过程中,我们大多会使用System.Timers.Timer来实现定时任务。System.Timers.Timer提供了很多优秀的功能,例如自动重置、执行一次、多次等。然而在使用System.Timers.Timer时,我们可能会遇到定时任务被阻塞问题…

    C# 2023年5月15日
    00
  • C# FTP操作类分享

    C# FTP操作类分享 在.NET开发中,FTP协议是常用的文件传输方式之一,C#语言也提供了FTP相关的操作类。本文将分享C#中如何操作FTP的实现方法,包括连接FTP服务器、上传文件、下载文件等操作,并附有两条示例说明。 连接FTP服务器 连接FTP服务器通常需要服务器地址、用户名和密码等信息,并使用FTP连接类FtpWebRequest进行连接,示例代…

    C# 2023年6月1日
    00
  • C#反射应用实例

    下面是关于“C#反射应用实例”的完整攻略。 什么是C#反射? C#反射是让程序在运行时动态获取类型信息的功能。通过C#反射,可以在不知道类型名称的情况下获取相应的类型,并对类型的成员进行操作。C#反射提供了一种动态获取类型信息的方式,使得程序具有更高的灵活性和可扩展性。 C#反射的基本用法 获取类型对象 使用反射获取类型信息的第一步是获取类型对象。可以通过T…

    C# 2023年6月7日
    00
  • ASP.NET Core 3.0轻量级角色API控制授权库

    ASP.NET Core 3.0轻量级角色API控制授权库攻略 ASP.NET Core 3.0提供了一个轻量级的角色API控制授权库,可以用于控制API的访问权限。本攻略将提供一些示例,演示如何使用ASP.NET Core 3.0轻量级角色API控制授权库。 步骤 步骤1:创建一个新的ASP.NET Core Web API项目 首先,需要创建一个新的AS…

    C# 2023年5月17日
    00
  • 深入理解C#中的枚举

    深入理解C#中的枚举 枚举是C#语言中经常使用的一种类型,是一组命名常量的集合。它为常量赋予了名称,提高了代码的可读性和可维护性。在本文中,我们将全面介绍C#中枚举的相关概念、用法和注意事项。 枚举的定义 C#中枚举的定义语法为: enum 枚举名 { 可命名常量1, 可命名常量2, … } 例如,定义一个表示星期的枚举: enum WeekDays {…

    C# 2023年5月15日
    00
  • C#实现字符串与图片的Base64编码转换操作示例

    下面为你详细讲解“C#实现字符串与图片的Base64编码转换操作示例”的完整攻略: 什么是Base64编码? Base64编码是一种用于将二进制数据转换成文本字符串的编码方式。在Base64编码中,每3个字节的数据由4个字符表示,所以编码后的文本字符串会比原始的二进制数据字符串长1/3。 C#实现字符串与图片的Base64编码转换方法 将字符串转换为Base…

    C# 2023年6月8日
    00
  • C#实现线程池的简单示例

    下面是呈现 C#实现线程池的简单示例 的攻略。 一、什么是线程池 线程池是一种应对多线程编程,用于优化性能的一种技术。简而言之,线程池就是提前创建一堆线程,放入一个池子中,等待其他任务出现时就可以利用这些线程来处理它们,从而避免了每次出现任务时都需要创建新线程的开销。 二、.NET官方提供的线程池 .NET官方提供了ThreadPool类,该类提供了一个全局…

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